Announcement

Collapse
No announcement yet.

Beschleunigung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Beschleunigung

    Hallo,
    ich habe zusammen mit einem Freund ein Programm zum Auslesen von ASE(3D ASCII Format) Datein geschrieben. Ansich funktioniert das Programm auch recht schnell.
    In einem ersten Schritt entferne ich alle
    Tabstops und ersetze sie durch Leerzeichen und in einem zweiten entferne ich alle mehrfachen
    Leerzeichen.

    <pre>
    FILE *in = fopen(ins, "rb");
    FILE *out = fopen(outs, "wb");
    static long fs = fGetFileSize(in);
    static short int ls=0, ts;
    static int linecount=0;
    for (long h=0; h<fs; h++) {
    ts = fgetc(in);
    if (ts == 9) ts=32;
    if (ts != 32 || ls != ts) fputc(ts, out);
    if (ts == 10) linecount++;
    ls = ts;
    }
    fclose(out);
    fclose(in);
    </pre>
    Jetzt meine Frage:
    gibt es eine Möglichkeit das hganze noch zu beschleunigen? Es dauert mit einer 30MB Datei ca 6 bis 8 Sekunden.
    mfg.: Andre´

  • #2
    Die Datei komplettin einem Rutsch in einen Speicherbereich lesen und dann die Manipulationen dort vornehmen
    Christian

    Comment


    • #3
      Ich habs mal probiert die Datei in ein short int* array einzulesen. Allerding geht das dann um ca 10% langsamer.<bR>
      Aber trotzdem danke für die Antwort.
      Vieleicht könntest du mal den code für das was du meinst posten.<bR>
      thx Andre&#180

      Comment


      • #4
        Mit SYSMEM-> C++Builder oder GlobalAlloc -> Win 32 API Speicher reservieren und mit dem von SYSMEM zurückgeliefertem Zeiger den Speicherbereich durchgehen
        Christian

        Comment

        Working...
        X