c++ - 读-处理-写的最佳缓冲区大小

标签 c++ c performance optimization memory-management

在我的函数中,我需要将文件中的一些数据读入缓冲区,操作数据并将其写回另一个文件。该文件大小未知,可能非常大。

如果我使用一个小的缓冲区,将会有一个很长的读/写周期,并且会花费很多时间。相反,长缓冲区意味着我需要消耗更多内存。我应该使用的最佳缓冲区大小是多少?这种情况是否依赖?

我在 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/

相关文章:

sql - 对表建立索引以获得更好的查询性能

c++ - 对于以下 C++ 代码中的编译错误 C2797,我可以使用什么解决方法?

c++ - 在/正在为 GCC 开发中是否有 `clang++:-Wunused-lambda-capture` 等效警告?

c++ - 检查所有 std::tuple 元素是否满足条件+设计问题

c - 使用 double* 值进行快速排序

wpf - WPF- ItemsControl的ListView与TextBoxes性能问题

C++ 为什么受约束的算法(例如 std::ranges::merge)也返回输入范围的结尾?

php - Pycrc 和 PHP 代码的 CRC32 计算与预期结果不匹配

c - 这些链接器的行为是什么?

java - 将列表拆分为重复列表和非重复列表 Java 8