Significantly improves the performance

The biggest improvement comes from using a buffered reader on top of the raw file,
this makes reads more efficient and reduces thread contention on the file lock.