我正在解析一个约500GB的日志文件,我的C++版本需要3.5分钟,而我的Go版本只需要1.2分钟。
我使用C++的流来逐行读取文件并解析。
我使用C++的流来逐行读取文件并解析。
#include <fstream>
#include <string>
#include <iostream>
int main( int argc , char** argv ) {
int linecount = 0 ;
std::string line ;
std::ifstream infile( argv[ 1 ] ) ;
if ( infile ) {
while ( getline( infile , line ) ) {
linecount++ ;
}
std::cout << linecount << ": " << line << '\n' ;
}
infile.close( ) ;
return 0 ;
}
首先,为什么使用这段代码会如此缓慢?其次,我该如何改进它以提高速度?
cout
在循环外,不应该有影响。 - Dialecticus