This is done by ensuring that the BufReader's buffer is filled first, then processing the entire buffer in one chunk.
The way it was previously done, each byte was a fallible read, meaning the byte it failed on was observable. Because of that, the compiler was unable to further optimize the processing to make use SIMD instructions.
Quoting @Measter :
Reddit comment
I noticed there's a ceiling-div, and tried to search for a built-in function, but it doesn't exist yet
Related issues: #16