Ho scritto un hands-on ricorsiva parser pitone puro per un formato di qualche file (ARFF) usiamo in una lezione. Ora la mia presentazione di esercizio è terribilmente lenta. Risulta di gran lunga il tempo più speso nel mio parser. Sta consumando molto tempo CPU, l'HD non è il collo di bottiglia.scrivere un parser veloce in python
Mi chiedo quali modi performanti ci sono per scrivere un parser in python? Preferirei non riscriverlo in C. Ho cercato di usare jython, ma ho ridotto molto le prestazioni! I file che analizzo sono in parte enormi (> 150 MB) con linee molto lunghe.
Il mio parser corrente ha bisogno solo di un look-ahead di un carattere. Pubblicherei la fonte qui, ma non so se sia una buona idea. Dopo tutto il termine di presentazione non è ancora finito. Ma poi, l'attenzione in questo esercizio non è il parser. Puoi scegliere qualsiasi lingua tu voglia usare e c'è già un parser per Java.
Nota: ho un sistema x86_64 così psyco (e sembra anche PyPy) non è un'opzione.
Aggiornamento: ora caricato il mio parser/scrittore di bitbucket.
Hai profilato il parser? È probabile che sia solo un collo di bottiglia a trattenere tutto. –
Senza un esempio di codice è impossibile dare un consiglio decente. Potresti usare una tecnica sonora con un difetto importante, o il tuo intero approccio potrebbe dover essere rielaborato, non abbiamo modo di saperlo. – mikerobi
Hai provato a usare psyco con esso? –