Dip*_*pto 13 c c++ optimization performance memory-management
在我的函数中,我需要将文件中的一些数据读入缓冲区,操作数据并将其写回另一个文件.该文件大小未知,可能非常大.
如果我使用一个小缓冲区,将会有一个很长的读/写周期,这将花费很多时间.相反,长缓冲区意味着我需要消耗更多内存.我应该使用的最佳缓冲区大小是多少?这种情况是依赖的吗?
我在Windows中看到了一些像Tera copy这样的应用程序,可以高效地管理大量文件.我应该注意其他任何技术或机制吗?
注意:此程序将在Windows下运行.
wil*_*ilx 18
了解微软对IO大小的看法:http://technet.microsoft.com/en-us/library/cc938632.aspx.基本上,他们说你应该在64K块中做IO.
在*NIX平台上,struct stat有一个st_blksize成员说明什么应该是最小的IO块大小.
它确实是高度依赖于案例的,您应该只编写程序以便能够处理灵活的缓冲区大小,然后尝试最佳大小.
如果你从小处开始然后增加缓冲区大小,你可能会达到一定的大小,之后你将看不到或极小的性能提升,因为CPU花费了大部分时间来运行你的代码,以及来自I的开销./O已经变得可以忽略不计了.
| 归档时间: |
|
| 查看次数: |
5824 次 |
| 最近记录: |