Ich habe eine Hands-on rekursive reine Python-Parser für ein bestimmtes Dateiformat (ARFF) geschrieben, die wir in einer Vorlesung verwenden. Jetzt läuft meine Übungseingabe furchtbar langsam. Es stellt sich heraus, dass die meiste Zeit in meinem Parser verbracht wird. Es kostet viel CPU-Zeit, die HD ist nicht der Flaschenhals.schreibe einen schnellen Parser in Python
Ich frage mich, welche performanten Möglichkeiten gibt es einen Parser in Python zu schreiben? Ich würde es lieber nicht in C umschreiben. Ich habe versucht, jython zu benutzen, aber das hat die Performance stark reduziert! Die Dateien, die ich analysiere, sind teilweise sehr groß (> 150 MB) mit sehr langen Zeilen.
Mein aktueller Parser benötigt nur eine Vorausschau auf ein Zeichen. Ich würde die Quelle hier posten, aber ich weiß nicht, ob das eine so gute Idee ist. Nach all dem ist die Abgabefrist noch nicht beendet. Der Fokus in dieser Übung liegt jedoch nicht auf dem Parser. Sie können wählen, welche Sprache Sie verwenden möchten, und es gibt bereits einen Parser für Java.
Hinweis: Ich habe ein x86_64 System so Psyco (und es scheint auch PyPy) ist keine Option.
Update: Ich habe jetzt meinen Parser/Writer auf bitbucket hochgeladen.
Haben Sie Ihren Parser profiliert? Wahrscheinlich ist es nur ein Engpass, der alles aufhält. –
Ohne ein Codebeispiel ist es unmöglich, anständige Ratschläge zu geben. Sie könnten eine solide Technik mit einem großen Fehler verwenden, oder Ihr gesamter Ansatz muss möglicherweise überarbeitet werden, wir haben keine Möglichkeit zu wissen. – mikerobi
Haben Sie versucht, mit Psyco damit? –