20 Sekunden? Das klingt schon gut! Ich hoffe, dass ich das heute abend noch testen kann.
Meinst ihr, dass es noch einen Unterschie machen würde die ganze datei erst Komplet in den Speicher zu lesen - also das getline nicht immer direkt auf die Datei zu machen? Das habe ich mal gehört. Kann es mir aber eigentlich gar nicht vorstellen....
Machs doch erstmal so wie gezeigt, dann kannst ja schauen, ob es noch zu langsam ist. So viel schneller wirst du es wohl auch mit moderatem Aufwand nicht mehr bekommen. -- Wer früher stirbt ist länger tot.
Ich habe ja durch meinen letzten Post deinen Vorschlag überhaupt nicht in Frage gestellt. Im Gegenteil. Da aber von anderer Seite im Zusammenhang mit diesen Problem der Verdacht geäußert wurde, dass es daran liebt, dass Zeile für Zeile aus der Datei gelesen wird; wollte ich nur mal hören was ihr so dazu denkt.
Kleiner add man kann das dumme leerzeichen und zeichen geten auch ersetzen durch: File>>sTemp; -- Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
Kleiner add man kann das dumme leerzeichen und zeichen geten auch ersetzen durch: File>>sTemp;
oder man verwendet Streamiteratoren so wie ich es gemacht habe, damit ist der Zugriff mindestend genauso einfach und man benötigt wirklich keine temporären Variablen zum zwischenspeichern mehr
oder man verwendet Streamiteratoren so wie ich es gemacht habe, damit ist der Zugriff mindestend genauso einfach und man benötigt wirklich keine temporären Variablen zum zwischenspeichern mehr
Was mein Wissen überschreitet -- Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
@unwissender: So ich hab mal mit deinem Vorschlag angefangen zu testen. Ne 20Mb Datei rennt bei mir in ca. 5-6 sec durch. (Intel Pen. IV 2GHz / 1GB Ram) Sieht also ganz gut aus. Ich habe mal das getestet, jmd. vorher dafür programmiert ist. Allerdings ist das direkt in die MFC-Diealoge reingewurschtelt und völlig undurchsichtig. Auf jedenfall ist es ziemlich statisch. Das läuft auch so in 5 sec durch. (Athlon 2400 XP 5000MB Ram).
Wie hast du das getestet? 20sec? Oder meinst du _mit_ Ausgabe?
Unter Windows meckert er allerdings bei der Zeile while(formater && !formater.eof()) rum. std::stringstream kennt den binären Operator && nicht...
Ohne Ausgabe, und ich habe nicht 20 Sek. gesagt, sondern < 20 Sek. Was du ja bestätigst.
while(formater && !formater.eof()) ist völlig in Ordnung.
Der Fehler liegt vermutlich bei anderem Code, den du noch dazugebaut hast, oder an deinem Compiler. gcc 4.x und vc 2005 nehmen das beide. -- Wer früher stirbt ist länger tot.