Wie kann ich Perl-Regexes profilieren?

8

Was ist der beste Weg, Perl-Regexes zu profilieren, um festzustellen, wie teuer sie sind?

    
brian d foy 06.01.2009, 04:33
quelle

3 Antworten

13

Perl kommt mit dem Benchmark -Modul, das eine Reihe von Codebeispielen enthalten kann und die Frage "which Einer ist schneller? ". Ich habe einen Perl-Tipp auf Benchmarking Basics , und obwohl Regexps nicht per se verwendet werden, bietet es eine schnelle und nützliche Einführung in das Thema, zusammen mit weiteren Referenzen.

brian d foy hat auch ein excellent Kapitel zum Benchmarking in seinem Mastering Perl Buch . Er war so nett, das Kapitel online als Entwurf zu verwenden lohnt sich das Lesen. Ich kann es wirklich nicht genug empfehlen.

Paul

    
pjf 06.01.2009, 05:37
quelle
3

Aber das Modul "Benutze das Benchmark" zu sagen, beantwortet die Frage nicht wirklich. Benchmarking einer Regex ist anders als das Benchmarking einer Berechnung; Sie benötigen eine große Menge an realistischen Daten, so dass Sie die Regex wie echte Daten betonen können. Wenn die meisten Ihrer Daten übereinstimmen, möchten Sie eine Regex, die schnell übereinstimmt. Wenn die meisten fehlschlagen, möchten Sie eine Regex, die schnell ausfällt. Sie könnten die gleiche Regex sein, aber vielleicht nicht.

    
Joe Casadonte 06.01.2009 17:21
quelle
0

Mein bevorzugter Weg wäre, eine große Menge von Eingabedaten an den RE zu haben, dann diese Daten N-mal (z.B. 100.000) zu verarbeiten, um zu sehen, wie lange es dauert.

Dann zwinge den RE und versuche es noch einmal (behalte alle alten REs als Kommentar für den Fall, dass du sie in Zukunft noch einmal vergleichen musst, wer weiß, welche erstaunlichen Optimierungen in Perl 7 erscheinen könnten?).

Es kann durchaus Werkzeuge geben, die REs analysieren können, um Ihnen Ausführungswege für bestimmte Eingaben zu geben (wie die Analysewerkzeuge in DBMS), aber da Perl die Sprache der Faulen ist (ein von Larry selbst überliefertes Gebot), I konnte nicht gestört werden, es zu finden: -).

    
paxdiablo 06.01.2009 04:52
quelle

Tags und Links