在我的函数中,我需要将文件中的一些数据读入缓冲区,操作数据并将其写回另一个文件。该文件大小未知,可能非常大。
如果我使用一个小的缓冲区,将会有一个很长的读/写周期,并且会花费很多时间。相反,长缓冲区意味着我需要消耗更多内存。我应该使用的最佳缓冲区大小是多少?这种情况是否依赖?
我在 Windows 中看到了一些像“Tera copy”这样的应用程序,可以有效地管理大文件。还有其他我应该注意的技术或机制吗?
注意:此程序将在 Windows 下运行。
最佳答案
查看 Microsoft 对 IO 大小的看法:http://technet.microsoft.com/en-us/library/cc938632.aspx .基本上,他们说您可能应该在 64K block 中进行 IO。
在 *NIX 平台上,struct stat
有一个 st_blksize
成员,它表示应该是最小 IO block 大小。
关于c++ - 读-处理-写的最佳缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15540725/