Parallel 23484567924; Serial 10204840629; Parallel was worse. 230% as long as serial.Parallel 32899454271; Serial 10073167110; Parallel was worse. 326% as long as serial.Parallel 33913801872; Serial 10052993466; Parallel was worse. 337% as long as serial.With FILE_FLAG_NO_BUFFERING things are even BUT both are as slow as the buffered parallel case above. i.e. Now everything is 2-3 times slower than the buffered serial reads. It seems like reading data in parallel disables or cancels out read buffering, on my system at least:Parallel 34752228822; Serial 34509786165; Parallel was worse. 100% as long as serial.Parallel 33359695965; Serial 34333134759; Serial was worse. 102% as long as parallel.Parallel 32994485361; Serial 33712713216; Serial was worse. 102% as long as parallel.I also made versions which read the entire files in one go, instead of multiple small read operations. (There being a big difference in these cases is why I think there is a problem. The OS appears to be allowing two large reads to compete with each other with the result that they both lose horribly.) These show more variable speed when buffering is enabled, I guess due to the files being cached in memory on subsequent reads (both in the same execution and between executions), but the parallel reads are still consistently slower for me even with the variance. (Perhaps it would be worth trying the tests in reverse order but I've spent too long on this for now and everything so far has confirmed what I saw in the past in cases where there was too much data, and too much time between tests of serial vs parallel builds, for disk caching to have been the only factor.)Here's my version of the project:http://nudel.dopus.com/par_read_proj.zipPre-build exes of the four versons (buffered/non-buffered and small-reads vs one-big-read):http://nudel.dopus.com/par_read_bins.zipFinally, in case it matters, the 23meg test file. Create 10 copies of it named 0.tmp to 9.tmp in the same dir that the exe is run from:http://nudel.dopus.com/par_read_file.zip