Syscalls are not the only consumer of wall clock time, which is what was measured.
> To read in binary, you open with 'rb' and not just 'r'.
No. "The default translation mode is 'b'." [1] And even in 't' mode, it's still reading bytes in PHP vs UCS-2 characters in C#.