Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Mal wieder: Einlesen aus Datei

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
12.06.2006, 11:46 Uhr
(un)wissender
Niveauwart


Um Speicher zu sparen bei großen Dateien kann man noch formater.str(""); hinzufügen
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
12.06.2006, 11:49 Uhr
Pler
Einer von Vielen
(Operator)


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....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
12.06.2006, 11:51 Uhr
(un)wissender
Niveauwart


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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
12.06.2006, 13:54 Uhr
Pler
Einer von Vielen
(Operator)


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.

Danke noch mal für die guten Tipps!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
12.06.2006, 14:22 Uhr
(un)wissender
Niveauwart


Ich meinte halt nur, bevor weiter optimieren, erstmal ausprobieren. Na ja, viel Erfolg!
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
12.06.2006, 21:41 Uhr
Karldin Shinowa
Professional Noob


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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
12.06.2006, 21:44 Uhr
~MartinF
Gast



Zitat von Karldin Shinowa:
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
12.06.2006, 21:49 Uhr
Karldin Shinowa
Professional Noob



Zitat von MartinF:

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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
15.06.2006, 13:53 Uhr
Pler
Einer von Vielen
(Operator)


@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...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
15.06.2006, 14:34 Uhr
(un)wissender
Niveauwart


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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: