gpt4 book ai didi

c++ - 读取文件时缓冲区大小会影响时间成本吗?

转载 作者:行者123 更新时间:2023-11-30 00:40:16 29 4
gpt4 key购买 nike

在读取文件时,我有两个关于缓冲区大小的选项。

char* buffer = new char[aBlock];
myFile.read(buffer,aBlock);

和,

char* buffer = new char;
while (!myFIle.eof())
myFile.read(buffer,1);

会不会有相当大的时间成本差异?请注意,作为缓冲区,我指的是代码中的 char* 缓冲区,我不是在谈论操作系统文件缓冲区

最佳答案

是的,会有的。在所有实际的操作系统中,执行 i/o 的代价比可用内存少的权衡要高得多。实际缓冲区大小比预期的要小得多。 FILE * 的 C 运行时库默认缓冲区大小为 512 字节,非常好 — 事实上,对于它所使用的多种情况来说确实非常好。这是为 Unix V6(约 1978 年)开发的 65,536 字节内存空间。

通过仔细测量吞吐量、CPU 负载和整体系统负载来优化缓冲区大小,我总是选择 1024 到 16384 字节范围内的缓冲区大小。唯一的异常(exception)是文件略大于该范围,在这种情况下,最好在内存可用时将整个文件保存在内存中。

关于c++ - 读取文件时缓冲区大小会影响时间成本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6444581/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com