0
我想讀取一個250K行文件,並將正則表達式應用於這些行中的每一行。但是代碼比Java的readline函數慢得多。在Java中,所有的解析都是在大約10秒內完成的,而在C++中則需要超過2分鐘。我見過的相對C++ ifstream.getline() significantly slower than Java's BufferedReader.readLine()?,並添加上的主要頂部兩行:C++ getline()比Java的readLine慢()
std::ifstream::sync_with_stdio(false);
std::ios::sync_with_stdio(false);
的代碼的其餘部分(我簡化它,以消除任何延誤的正則表達式可能會導致):
#include "stdafx.h"
#include <ios>
#include <string>
#include <fstream>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
std::string libraryFile = "H:\\library.txt";
std::ios::sync_with_stdio(false);
std::string line;
int i = 1;
std::ifstream file(libraryFile);
while (std::getline (file, line)) {
std::cout << "\rStored " << i++ << " lines.";
}
return 0;
}
這個例子看起來很簡單,但即使是在大多數帖子中提出的修正似乎都不起作用。我已經使用VS2012中的發佈設置多次運行.exe,但我無法達到Java的時代。
http://stackoverflow.com/questions/6820765/c-ifstream-getline-significantly-slower-than-javas-bufferedreader-readline –
你確定它是可能重複的是不是''' std :: cout'''這使它慢? –
我知道它是重複的,我甚至說過,但該解決方案似乎不適用於我的片段,這就是我轉貼的原因。我可以擴展該帖子嗎?我不確定適當的行動是什麼。 –