如何选择文件I / O缓冲区大小来读取Windows中的文件?

时间:2011-06-30 15:31:15

标签: networking file-io buffer windows-explorer wan

在调查WAN上读取文件时我的应用程序性能有些慢的同时,我注意到在Windows资源管理器中复制该文件要快得多。

使用Process Monitor进行的一些进一步调查揭示了原因:我的应用程序使用的是C运行时的默认BUFSIZE为512,而Windows资源管理器以某种方式确定它应该以61440字节块读取文件(这显然是任一个支持的最大值) SMB或Windows的SMB实施)。因此,Windows资源管理器必须减少往返次数并且运行速度更快。

缓冲区大小的大多数建议都在4k-16k范围内,但对于WAN环境,通过最大化缓冲区大小来最小化往返是有意义的。 Windows资源管理器如何确定要使用的缓冲区大小?

1 个答案:

答案 0 :(得分:0)

我原本认为比网络MTU更好的东西