gpt4 book ai didi

c++ - 在 Windows 7 上读取文件很慢

转载 作者:搜寻专家 更新时间:2023-10-31 01:21:15 25 4
gpt4 key购买 nike

这里是基本的 C++ 问题。我正在尝试在 Windows 7 Pro 上读取一个大文件。 C++ 编译器是 Visual Studio 2010。(版本 16.0)。我发现该程序在 Windows 7 上的运行速度比在同一台机器上运行 Ubuntu 的虚拟机上慢 5 倍。使用 gcc 4.4.3 的 Ubuntu 版本 10.04。该文件相当大~900MB。有问题的代码可以缩小到以下代码段。有关 Windows 特定调整以更快读取文件的任何线索?该文件大约有 1700 万行,在 Windows 7 上大约需要 13 秒,在 Ubuntu(这是同一个 Windows 7 机器上的虚拟机)上大约需要 2.3 秒。我在 Visual C++ 上使用/O2 标志,在 Ubuntu/gcc 4.4.3 上使用 -O3

谢谢

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{
const char* test_file_path = argv[1];
ifstream ifs(test_file_path);

if (!ifs.is_open()) {
cout << "Could not open " << test_file_path << endl;
return 0;
}

unsigned long line_count = 1;
unsigned long sum = 0;
string line;
// Go through all the lines in the file
while (getline(ifs, line)) {
line_count++;
}
cout << line_count << '\n';
return 0;
}

编辑:尝试提升 Anders 提出的内存映射文件建议,时间降至 1.2 秒。看起来 Ubuntu 有点默认,而你需要在 Windows 上明确。谢谢安德斯。

最佳答案

如果您关心性能,我建议您跳出 C++ 世界,进入 Win32 API 文件处理(例如,内存映射文件,boost 有一个用于此的库)。

关于c++ - 在 Windows 7 上读取文件很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4006597/

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