Bringt re.compile() Geschwindigkeitsvorteil?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Bringt re.compile() Geschwindigkeitsvorteil?

Beitragvon sape » Freitag 1. Dezember 2006, 13:11

Oder warum sollte man das nutzen?

Geht doch auch wenn man z.B. gleich denn 'pattern' bei 're.split()' eingibt anstatt den 'pattern' erst mit 're.compile()' umzuwandeln und dann zu benutzen :?

lg
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Beitragvon rayo » Freitag 1. Dezember 2006, 13:31

Ohne compile muss re einfach bei jedem aufruf dein Pattern kompilieren und sonst nur 1mal.

Bringt etwas wenn du häufig die gleichen Patterns benutzt.

Gruss
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 1. Dezember 2006, 16:59

Ist aber etwas unpraktisch wenn du das dann nicht nutzt - das Problem hatte Bazaar mal, dass die Startup-Zeit groß war, obwohl man die ganzen vorkompilieren regulären Ausdrücke nicht immer alle gebraucht hat. Okay, bei einigen wenigen regulären Ausdrücken fällt das natürlich noch nicht so ins Gewicht.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Freitag 1. Dezember 2006, 17:41

OK, danke euch. Werde das dann nur bei patter nutzen die ich öfter als 1-3 mal brauche.

lg
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Beitragvon birkenfeld » Freitag 1. Dezember 2006, 20:25

rayo hat geschrieben:Ohne compile muss re einfach bei jedem aufruf dein Pattern kompilieren und sonst nur 1mal.


Stimmt nicht -- re.compile() hat einen Cache, weswegen re.match() mit gleichem Pattern nicht neu kompiliert.

Natürlich hat das Selbstkompilieren trotzdem Vorteile: Der Cache nimmt nur eine begrenzte Anzahl Einträge auf, man spart sich den Aufruf von re._compile() durch re.match(), und kann das Pattern mehrmals im Code verwenden.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
BlackJack

Beitragvon BlackJack » Freitag 1. Dezember 2006, 23:17

Der Cache ist aber nur ein Implemetierungsdetail, sollte man sich nicht drauf verlassen.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]