Jaki jest najlepszy sposób na profilowanie wyrażeń regularnych Perla, aby określić, jak drogie są?Jak mogę profilować wyrażenia Perla?
Odpowiedz
Perl jest dostarczany z modułem Benchmark, który może pobrać kilka próbek kodu i odpowiedzieć na pytanie "który z nich jest szybszy?". Mam Perl Tip na Benchmarking Basics, i choć nie używają wyrażeń regularnych jako takich, daje szybkie i użyteczne wprowadzenie do tematu, wraz z dalszymi odniesieniami.
Brian d foy ma także doskonały rozdział na temat benchmarkingu w swojej książce Mastering Perl. Był na tyle uprzejmy, aby umieścić chapter on-line as a draft, co jest warte przeczytania. Naprawdę nie mogę tego wystarczająco polecić.
Paul
Moim preferowanym sposobem byłoby mieć duży zestaw danych wejściowych do RE, a następnie przetwarzać te dane N razy (np. 100 000), aby zobaczyć, jak długo to trwa.
Następnie dostosuj RE i spróbuj ponownie (zachowaj wszystkie stare RE jako komentarze na wypadek, gdybyś musiał je ponownie sprawdzić w przyszłości, kto wie, jakie cudowne optymalizacje mogą pojawić się w Perlu 7?).
Mogą istnieć narzędzia, które mogą analizować RE, aby podać ścieżki wykonania dla konkretnych danych wejściowych (takich jak narzędzia analityczne w DBMS), ale ponieważ Perl jest językiem leniwych (przykazanie wydane przez samego Larry'ego), Nie mogłem się doczekać, kiedy go znajdę :-).
Wystarczy powiedzieć "użyj benchmark" moduł naprawdę nie odpowiedzieć na pytanie, choć. Benchmarking regex różni się od porównywania wyników obliczeń; potrzebujesz dużej ilości realistycznych danych, abyś mógł zaakcentować wyrażenie regularne, tak jak prawdziwe dane. Jeśli większość danych będzie pasować, potrzebujesz wyrażeń regularnych dopasowanych szybko; jeśli większość zakończy się niepowodzeniem, potrzebujesz wyrażeń regularnych, które szybko zawiodą. Mogliby skończyć będąc tym samym regexem, ale może nie.
- 1. Jak mogę profilować aplikację Kivy?
- 2. Jak mogę dopasować adresy IPv6 do wyrażenia regularnego Perla?
- 3. Jak dynamicznie budować wyrażenia regularne Perla?
- 4. Znaczenie części wyrażenia regularnego perla?
- 5. Jak mogę profilować uruchamianie aplikacji Rails?
- 6. Jak mogę profilować kompletną kompilację C++?
- 7. Jak mogę profilować aplikację zasilaną SQLAlchemy?
- 8. Jak mogę debugować skrypt Perla?
- 9. Wyrażenia regularne w stylu perla w emacs
- 10. Jak profilować kod QtScript?
- 11. Jak profilować kod JRuby?
- 12. Jak profilować gramatykę Antlr
- 13. Jak profilować wykorzystanie pamięci?
- 14. Jak profilować MySQL
- 15. Jak profilować sieci TensorFlow?
- 16. Jak profilować aplikację dart?
- 17. Jak mogę profilować wydajność szablonu w Template :: Toolkit?
- 18. Jak mogę usunąć tekst w nawiasach za pomocą wyrażenia regularnego?
- 19. Jak mogę pobrać plik za pomocą Perla?
- 20. Jak mogę oznaczyć kod Perla jako przestarzałe?
- 21. Jak mogę wyprowadzić UTF-8 z Perla?
- 22. Jak mogę automatycznie uporządkować kod źródłowy Perla?
- 23. Jak mogę przetestować samodzielny skrypt Perla?
- 24. Jak mogę przedefiniować metody klasy Perla?
- 25. Jak mogę zarządzać zależnościami modułu Perla?
- 26. Jak profilować klasyczną stronę ASP?
- 27. Jak profilować żądania Guzzle 6?
- 28. Czy mogę profilować skrypty Lua działające w Redis?
- 29. Jak profilować kod R z kodem SNOW
- 30. Jak profilować metody C# na sekundę?
Oprócz rozdziałów Benchmarking i Profiling, zapoznaj się z rozdziałem regex dla niektórych narzędzi. –
perl -Mre = debug/use re 'debug'; –