Dateien TURBO-lesen???



  • Könntest du mir mal ein kleines Beispiel geben??? Wie kann man denn mit der WinAPI Files auslesen?? Obwohl, ich könnte ja mal in den Petzold gucken...



  • am schnellsten würde es mit memory mapped files gehen, dann bekommst du nen pointer auf den anfang der datei und machst nur while(pt++!='.');

    wenn du das file als read only machst, bekommst du die meißte performance.

    aber wieviel MB mußt du denn durchsuchen, dass es so zeitkritisch wird?

    rapso->greets();



  • Wie wäre es mit Assembler?



  • Original erstellt von HAR:
    Wie wäre es mit Assembler?

    witzbold



  • Original erstellt von HAR:
    Wie wäre es mit Assembler?

    Ich bevorzuge direkte Machinensprache.



  • Sehr optimieren kann man das ganze schon, wenn man immer DWORD-Werte oder sogar QWORD-Werte ausliest



  • Original erstellt von rapso:
    **am schnellsten würde es mit memory mapped files gehen, dann bekommst du nen pointer auf den anfang der datei und machst nur while(pt++!='.');

    wenn du das file als read only machst, bekommst du die meißte performance.
    aber wieviel MB mußt du denn durchsuchen, dass es so zeitkritisch wird?
    **

    Hi rapso!
    Die Datei ist nicht gross, so ~250 kB, es geht mir nur darum, dass sie schnell geparst werden kann.
    Hört sich aber gut an mit dem memory mapping, wie öffne ich den so eine gemappte Datei???

    Gruss, code_pilot 🙄



  • Also bei 250kb würde ich mir absolut keine Sorgen machen. 🙂

    Oder hast du zweifelsfrei nachgewiesen, dass der Flaschenhals in deinem Code wirklich an dieser Schleife hängt? Normalerweise liegt der Engpass woanders.

    Ich würde die ganze Datei einfach in einen string oder vector<char> einlesen, und diesen dann durchsuchen. Das wirst du auch mit Memory mapped Files nicht schneller hinkriegen (zumindest bei so kleinen Dateien).



  • Original erstellt von code_pilot:
    **```cpp
    string text;
    char ch;
    while (ch != '.')
    {
    infile.get(ch);
    if (infile.eof()) break;
    text = text + ch;
    }

    Liest die Schleife Zeilenweise oder einzelne chars?
    Wäre sinnvoller, mehrere chars auf einmal zu lesen, das spart Zugriffszeit der Festplatte / CDROM / Diskette



  • Original erstellt von cd9000:
    **
    Ich würde die ganze Datei einfach in einen string oder vector<char> einlesen, und diesen dann durchsuchen. Das wirst du auch mit Memory mapped Files nicht schneller hinkriegen (zumindest bei so kleinen Dateien).**

    Hi!
    Ahja, also lese ich das ding einmal ins Memory und else es da aus! Verstehe, ich glaube das bringt mich schon um einiges weiter, besten Dank 🙂

    code_pilot 😮


Anmelden zum Antworten