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

Wie finde ich am Schnellsten ein Wort im String?

Beitragvon Raggi » Mittwoch 26. März 2008, 22:17

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

Beitragvon birkenfeld » Mittwoch 26. März 2008, 22:58

Code: Alles auswählen

"syshead" in string

ist sicherlich die schnellste Methode.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Wie finde ich am Schnellsten ein Wort im String?

Beitragvon Leonidas » Mittwoch 26. März 2008, 23:46

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 Modvoice
BlackJack

Beitragvon BlackJack » Donnerstag 27. März 2008, 09:14

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

Beitragvon Raggi » Donnerstag 27. März 2008, 10:08

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!

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Holger Chapman, Tholo