Tôi đang phân tích cú pháp tệp nhật ký ~ 500GB và phiên bản C++ mất 3,5 phút và phiên bản Go của tôi mất 1,2 phút.Cải thiện dòng tệp đọc của C++ theo dòng?
Tôi đang sử dụng luồng của C++ để truyền mỗi dòng của tệp để phân tích cú pháp.
#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 ;
}
Thứ nhất, tại sao quá chậm để sử dụng mã này? Thứ hai, làm thế nào tôi có thể cải thiện nó để làm cho nó nhanh hơn?
* tại sao nó quá chậm để sử dụng mã này * đầu tiên đo một lần nữa mà không sử dụng phần :: cout std - bây giờ bạn đang đo tệp I/O và in để bàn điều khiển – stijn
'cout' nằm ngoài vòng lặp. Không nên tạo sự khác biệt. – Dialecticus
Khi bạn nói rằng bạn đang "phân tích cú pháp" một tệp, điều đó có nghĩa là gì? Có phải tất cả các bạn đang đọc và đếm các dòng? –