I'm reading file 800 Mb via FileStream (.NET 3.5, Console application). The hard drive has SATA 3 bus (600 Mb/s), but I can't figure out: why the time to read the file is only 486 ms.
Things get even worse when I try to read it asynchronously - it takes about 100-150 ms.
The file is not cached - I can see 800 Mb increase in consumption of RAM only when the file is actually loaded into the memory.
Please, help me, this things seem very weird to me
When you read a file it's also copied into the file system cache by the operating system. If the file has not been modified since the last read and it's still cached, the read is served entirely from RAM. That's why after reading a file once you can bypass the disk completely for subsequent reads.
You don't see the cache as memory consumption either. The cache is the entirety of the free memory, something that Task Manager will also point out: