我写了一个小的命令行工具,我需要循环和迭代一个巨大的文件服务器。逻辑真的很简单。但它需要很多时间。我发现问题是读取二进制文件到一个缓冲区。我想举行的实现容易,因为它的c++和其他一些人也必须了解代码。
std::ifstream input( foundFile.c_str(), std::ios::binary );
std::vector<unsigned char> buffer(std::istreambuf_iterator<char>(input), {});
最后我想我必须重构成块阅读。但是总的来说,为什么这种方式读入文件二进制文件这么慢呢?
完整来源:https://gitlab.com/Onnebrink/cltools/-/blob/main/src/dupfind/dupfind.cpp
1条答案
按热度按时间plupiseo1#
现在,它快多了。我想我必须稍微使用一下bufferSize。也许4096byte太小了。但是我没有一个很好的概述关于它将被发现的文件大小的平均情况。也许我应该根据创建的文件大小使它更具适应性