Benötige einen Schubbs in die richtige Richtung: Zwischenspeichern von Daten



  • Hallo,

    ich arbeite mich seit einiger Zeit in C++ ein. Mein aktuelles Projekt hat zum Ziel ein
    Log einzulesen und daraus "Regeln" zu gewinnen. Diese Regeln können mehrfach im File
    vorkommen.

    Also gehe ich derzeit wie folgt vor:

    o Log-File wird zum Lesen geöffnet

    o Ich loope über jede Zeile, schaue mit RegEx nach ob die der Datensatz gültig ist oder
    ob dieser mehrzeilig ist. Wenn ja, wird solange die nächste Zeile gelesen bis ich das Ende
    des Datensatz habe (Ja, das hört sich nicht nur wirr an! Ist aber leider so gegeben).

    o Ist der komplette Datensatz eingelesen splitte ich ihn auf und packe die interessanten
    Infos in Variable. Die wesentlichen sind "Zeilennummer" und "Regel"

    Merke: Jede Regel gehört später in eine spezifische Zeile und es können hunderte Regeln
    in einer Zeile stehen. Jede spezifische Zeile steht für ein Regelsatz.

    Das Ausgabe-Format sieht also wie folgt aus:

    Zeile 1> <Regel 1> <Regel 2> <Regel 3>.... <Regel N>
    Zeile 2> <Regel 1> <Regel 2> <Regel 3>.... <Regel N>
    Zeile 3> <Regel 1> <Regel 2> <Regel 3>.... <Regel N>
    Zeile 4> <Regel 1> <Regel 2> <Regel 3>.... <Regel N>

    Zeile 1 könnte zum Beispiel den Luftverkehr regeln, Zeile 2 den Straßenverkehr, Zeile 3
    den Schienenverkehr usw. Mehr als 50 Zeilen sind nicht zu erwarten, aber jede Zeile kann
    komplexe Regeln von bis zu 20 Zeichen haben.

    Was ich jetzt also aktuell in der Schleife habe ist die Zeilennummer und die aktuell
    gewonnene Regel.

    Die aktuelle Frage ist nun wie ich das ganze am besten zwischen Speicher da während des
    Loops über alle Einträge ja weitere Einträge hinzukommen.

    Multidimensionale Vektoren sollen nicht so Performant sein, insbesondere wenn ich noch
    auf die Existenz der aktuellen Regel prüfen möchte. In meiner heilen Datenbank-Welt ist
    die Lage einfach: Bau ne Tabelle die passt, lass den Index DupRecs vermeiden, insertiere
    bis Du fertig bist und les die ganze Tabelle sortiert aus.

    Ich hab gegoogelt aber nicht wirklich was gefunden was mir hier weiter hilft. Wie macht
    man von der Theorie her so etwas am besten in C++? Auch wenn Geschwindigkeit dabei eher
    eine untergeordnete Rolle spielt: ich würde gerne lernen wie man so etwas professionell
    angeht.

    Für Hinweise und Tipps bin ich dankbar 🙂

    Gruß
    Blacksheep70



  • Blacksheep70 schrieb:

    Multidimensionale Vektoren sollen nicht so Performant sein, insbesondere wenn ich noch
    auf die Existenz der aktuellen Regel prüfen möchte.

    Das ist in dieser allgemeinen Form dummes Zeug, insbesondere da man einen Vector auch schnell durchsuchen kann, wenn er sortiert ist.

    Eine Alternative wäre möglicherweise map bzw. unorderd_map.


Log in to reply