Ich muss Zeile für Zeile in großen TXT-Dateien (1 GB) lesen und fgets() dazu verwenden. Ich führe eine leere While-Schleife und die Ausführung dauert extrem lange (30 Minuten) mit 99% CPU-Auslastung.CPU-Auslastung 99% beim Lesen großer txt-Datei mit fgets() C++
int buffer_size = 30; Zeichenpuffer [Puffergröße];
while (fgets(buffer, buffer_size, traceFile1) != NULL)
{
}
Ich habe etwas lesen und anscheinend die Gemeinkosten im Zusammenhang mit Textanalyse verursacht dies. Die Frage ist also, gibt es eine Möglichkeit, in einer TXT-Datei zu lesen, während dies vermieden wird? Ich lese in Traces für einen Netzwerk-Simulator, so dass jede Zeile normalerweise | Injection_cycle-Quellziel |
Ich habe für eine Weile suchen, also wenn jemand eine intelligente Antwort auf diese Frage hat, würde ich absolut begeistert sein :)
Willkommen bei Stack Overflow. Bitte nehmen Sie sich die Zeit, [The Tour] (http://stackoverflow.com/tour) zu lesen und beziehen Sie sich auf das Material aus der [Hilfe] (http://stackoverflow.com/help/asking), was und wie Sie können fragen Sie hier. –
"Ich habe etwas gelesen und anscheinend verursachen die Gemeinkosten, die mit dem Parsen von Text zusammenhängen, das." - In dem von Ihnen geposteten Code findet kein Parsing statt. –
Es sollte nicht 30 Minuten dauern, eine 1GB Datei auf diese Weise zu lesen. Etwas ist sehr falsch. (Die kleine Puffergröße hilft nicht, aber das kann nicht das ganze Problem sein.) –