Sto analizzando un file di registro ~ 500 GB e la mia versione C++ richiede 3,5 minuti e la versione Go richiede 1,2 minuti.Migliorare il file di lettura di C++ riga per riga?
Sto utilizzando gli stream di C++ per lo streaming di ogni riga del file in analisi.
#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 ;
}
In primo luogo, perché è così lento utilizzare questo codice? In secondo luogo, come posso migliorarlo per renderlo più veloce?
* perché è così lento usare questo codice * prima misura di nuovo senza usare la parte std :: cout - stai misurando i file I/O e stampando su console – stijn
'cout' è fuori dal ciclo. Non dovrebbe fare la differenza. – Dialecticus
Quando dici che stai "analizzando" un file, cosa intendi con questo? Tutto quello che stai facendo è leggere e contare le linee? –