Wie finde ich am Schnellsten ein Wort im String?

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.
Antworten
Raggi
User
Beiträge: 12
Registriert: Donnerstag 6. März 2008, 23:29

Hallo,

ich habe eine Frage in Sachen Performance-Optimierung:

wie findet Python am schnellsten heraus, ob ein String die Zeichenfolge "syshead" behinhaltet? Die Antwort sollte Boolean sein, da beim einem False der Exit kommt.

Gibt es einen schnelleren Weg als einen reg.Ex?

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

Code: Alles auswählen

"syshead" in string
ist sicherlich die schnellste Methode.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Raggi hat geschrieben:Gibt es einen schnelleren Weg als einen reg.Ex?
Von der Herangehensweise ist die Frage eher ob es einen langsameren Weg als reguläre Ausdrücke gibt. Ein endlicher Automat wie die Regular Expression Engine (ob jetzt NFA oder DFA macht in dieser Größenordnung keinen Unterschied) wird immer langsamer sein als das Vergleichen von (Byte)Werten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Kommt auf die Umsetzung an. So ein "statischer" Ausdruck ist ja letztendlich auch nur vergleichen von Bytewerten. Wenn man dann noch einen JIT-Compiler in die RE-Engine einbaut, sollte das nicht viel langsamer werden als "normales" Testen auf "enthalten sein".
Raggi
User
Beiträge: 12
Registriert: Donnerstag 6. März 2008, 23:29

birkenfeld hat geschrieben:

Code: Alles auswählen

"syshead" in string
ist sicherlich die schnellste Methode.
mich überrascht es immer wieder, wie einfach PY ist. Unglaublich.

Danke!
Antworten