Parsuję plik dziennika o pojemności 500 GB, a moja wersja w C++ trwa 3,5 minuty, a wersji Go - 1,2 minuty.Poprawianie czytania pliku C++ wiersz po linii?
Używam strumieni C++ do streamowania każdej linii pliku do parsowania.
#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 ;
}
Po pierwsze, dlaczego tak wolno korzystać z tego kodu? Po drugie, jak mogę ją poprawić, aby była szybsza?
* dlaczego tak wolno używać tego kodu * najpierw zmierzyć ponownie bez użycia std :: cout - teraz mierzysz plik I/O i drukujesz na konsolę – stijn
'cout' jest z pętli. Nie powinno to mieć znaczenia. – Dialecticus
Kiedy mówisz, że "parsujesz" plik, co przez to rozumiesz? Czy wszystko, co robisz, czyta i liczy linie? –