Perl vs. egrep - ...
Bevor ich das wieder vergesse, manchmal lohnt es sich Gedanken über die Wahl des Tools zu machen.
Nehmen wir den Fall, dass Du aus einer Worliste alle fünfbuchstabigen Wörter suchst, die spiegelbar sind, also am Anfang zwei Buchstaben haben, die am Ende in umgekehrter Reihenfolge stehen, wie zum Beispiel "neben" oder "stets".
Dann löst perl die Aufgabe auf meinem Testrechner in 0,425 und egrep in 2,069 Sekunden. Das ist für eine Einzelabfrage nicht wichtig, aber in Summe bei sehr großen Datenbeständen spielt so etwas natürlich eine Rolle.
Zum selber testen (am besten mehrfach laufen lassen):
u@ws:~$ time perl -ne 'print if /^(.)(.)(.)\2\1$/' < /usr/share/dict/ngerman > /dev/null
real 0m0.425s
user 0m0.412s
sys 0m0.012s
u@ws:~$ time egrep "^(.)(.)(.)\2\1$" < /usr/share/dict/ngerman > /dev/null
real 0m2.069s
user 0m2.004s
sys 0m0.012s
Nehmen wir den Fall, dass Du aus einer Worliste alle fünfbuchstabigen Wörter suchst, die spiegelbar sind, also am Anfang zwei Buchstaben haben, die am Ende in umgekehrter Reihenfolge stehen, wie zum Beispiel "neben" oder "stets".
Dann löst perl die Aufgabe auf meinem Testrechner in 0,425 und egrep in 2,069 Sekunden. Das ist für eine Einzelabfrage nicht wichtig, aber in Summe bei sehr großen Datenbeständen spielt so etwas natürlich eine Rolle.
Zum selber testen (am besten mehrfach laufen lassen):
u@ws:~$ time perl -ne 'print if /^(.)(.)(.)\2\1$/' < /usr/share/dict/ngerman > /dev/null
real 0m0.425s
user 0m0.412s
sys 0m0.012s
u@ws:~$ time egrep "^(.)(.)(.)\2\1$" < /usr/share/dict/ngerman > /dev/null
real 0m2.069s
user 0m2.004s
sys 0m0.012s
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt