UPDATE änderte die Antwort drastisch!
Ich habe eine riesige Reihe von Protokollzeilen und ich muss jede Zeile analysieren (Effizienz ist also sehr wichtig).
Denken Sie nur daran, dass C++ in dieser Situation nicht viel zur Effizienz beitragen wird. Lassen Sie sich nicht dazu verleiten, zu denken, dass Ihr Programm eine hohe Performance hat, nur weil Sie in C++ einen schnellen Parsing-Code haben!
Die Effizienz, die Sie wirklich brauchen, ist nicht die Leistung auf der Ebene "Maschinencode" des Parsing-Codes, sondern auf der Ebene des gesamten Algorithmus.
Denken Sie darüber nach, was Sie zu tun versuchen.
Sie haben eine große Textdatei, und Sie mögen jede Zeile in eine Datenstruktur konvertieren,
Speicher große Datenstruktur im Speicher ist sehr ineffizient , egal welche Sprache Sie verwenden!
Was Sie tun müssen, ist "fetch" eine Zeile zu einer Zeit, konvertieren Sie es in eine Datenstruktur, und damit umgehen, dann, und nur nachdem Sie mit der Datenstruktur fertig sind, gehen Sie und holen Sie die nächste Zeile und konvertieren Sie es in eine Datenstruktur, damit umgehen, und wiederholen.
Wenn Sie das tun, haben Sie bereits den größten Engpass gelöst.
Für die Textzeile Parsen, es scheint, das Format Ihrer Daten ganz simpel ist, überprüfen Sie eine ähnliche Frage, die ich vor einiger Zeit gefragt: C++ string parsing (python style)
In Ihrem Fall, ich nehme an, Sie eine Zeichenfolge verwenden könnten streamen und den Operator >>
verwenden, um das nächste "Ding" in der Zeile zu lesen.
siehe this answer zum Beispiel Code.
Alternativ (Ich wollte diesen Teil nicht löschen !!) Wenn Sie dies in Python schreiben könnten, wird es viel einfacher. Ich weiß nicht, Ihre Situation (es scheint, dass Sie mit C stecken ++), aber immer noch
Schauen Sie sich diese Präsentation für diese Art von Aufgabe zu tun Python-Generator Ausdrücke effizient zu nutzen: http://www.dabeaz.com/generators/Generators.pdf
Es ist ein Wert, während Lese . Auf Folie 31 beschäftigt er sich mit etwas, das dem, was Sie versuchen, sehr ähnlich zu sein scheint.
Es wird Ihnen zumindest einige Anregungen geben.
Es zeigt auch ziemlich stark, dass die Leistung nicht durch den bestimmten String-Parsing-Code, sondern den Overall-Algorithmus gewonnen wird.
Hmmm ... können Sie garantieren, dass Semikolons nicht in Ihren URLs erscheinen? Oder zumindest, dass sie nicht an seinen Enden erscheinen? – dmckee
Was ist Ihr Ziel? Was werden Sie nach der Analyse mit den Daten machen? – hasen