@markebbert, yes I've actually made quite a serious error in the code I posted. The way streams work is a bit different from files and I can't actually do what I did to the buffer size. What actually happens is that the code reads in 100 MB of file, parses up to one line, and then throws the rest out (OOPS). Which is why it runs so fast.
It should still run fairly fast once I'm done fixing it up. I'll keep you posted!