¿Cuál es la mejor forma de perfilar las expresiones regulares de Perl para determinar qué tan caras son?¿Cómo puedo perfilar las expresiones regulares de Perl?
Respuesta
Perl viene con el módulo Benchmark, que puede tomar varias muestras de código y responder a la pregunta "¿cuál es más rápido?". Obtuve Perl Tip en Benchmarking Basics, y aunque eso no usa expresiones regulares per se, proporciona una introducción rápida y útil al tema, junto con otras referencias.
brian d foy también tiene un excelente capítulo sobre evaluación comparativa en su libro Mastering Perl. Ha tenido la amabilidad de poner el chapter on-line as a draft, que bien vale la pena leer. Realmente no puedo recomendarlo lo suficiente.
Paul
Mi forma preferida sería tener un gran conjunto de datos de entrada a la RE y luego procesar esos datos N veces (por ejemplo, 100.000) para ver cuánto tiempo lleva.
Luego modifique la RE y vuelva a intentar (mantenga todos los RE antiguos como comentarios en caso de que necesite volver a compararlos en el futuro, ¿quién sabe qué optimizaciones maravillosas pueden aparecer en Perl 7?).
Puede haber herramientas que puedan analizar RE para proporcionarle rutas de ejecución para entradas específicas (como las herramientas de análisis en DBMS ') pero, dado que Perl es el lenguaje de los perezosos (un mandamiento dictado por el propio Larry), No podría molestarme en ir a buscarlo :-).
Simplemente decir "utilizar el punto de referencia" módulo en realidad no responder a la pregunta, sin embargo. La evaluación comparativa de una expresión regular es diferente a la evaluación comparativa de un cálculo; necesita una gran cantidad de datos realistas para que pueda enfatizar la expresión regular como lo harían los datos reales. Si la mayoría de sus datos coincidirán, querría una expresión regular que coincida rápidamente; si la mayoría fallará, quiere una expresión regular que falle rápidamente. Podrían terminar siendo la misma expresión regular, pero quizás no.
- 1. depuración de Perl expresiones regulares
- 2. ¿Cómo puedo hacer coincidir contra varias expresiones regulares en Perl?
- 3. Doble interpolación de expresiones regulares en Perl
- 4. Rendimiento de expresiones regulares: Boost vs. Perl
- 5. ¿Cómo dominar las expresiones regulares?
- 6. Traducir expresiones regulares de Perl a .NET
- 7. nulabilidad (Las expresiones regulares)
- 8. Perl como expresiones regulares en Python
- 9. ¿Por qué las expresiones regulares se llaman expresiones "regulares"?
- 10. Cómo introspectar expresiones regulares en la API de Perl
- 11. ¿Debo evitar las expresiones regulares?
- 12. ¿Cómo detecta JavaScript las expresiones regulares?
- 13. Agrupación en las expresiones regulares de haskell
- 14. ¿Cómo se implementan las expresiones regulares en .NET?
- 15. ¿Cómo puedo combinar de manera eficiente muchos patrones de expresiones regulares diferentes en Perl?
- 16. ¿Cómo puedo encontrar la ubicación de una coincidencia de expresiones regulares en Perl?
- 17. ¿Cómo puedo almacenar capturas de expresiones regulares en una matriz en Perl?
- 18. ¿Es posible tener expresiones regulares que coincidan con todas las expresiones regulares válidas?
- 19. ¿Cómo puedo usar las expresiones regulares de forma segura desde la entrada del usuario?
- 20. búsqueda de Ruby matrices con expresiones regulares Las expresiones
- 21. Las expresiones regulares: extraer todas las palabras de cotizaciones
- 22. Las expresiones regulares en C preprocesador macro
- 23. Significado de (?) En expresiones regulares
- 24. expresiones regulares Perl para extraer bloques de varias líneas
- 25. ¿Cuántas expresiones regulares puedo encadenar usando alternancia?
- 26. Perl expresiones regulares hallazgo personaje del conjunto arbitrario
- 27. Las expresiones regulares búsqueda negativa hacia delante
- 28. Perl: pasar la búsqueda de expresiones regulares y reemplazar utilizando las variables
- 29. Compilador de expresiones regulares
- 30. Limitaciones de expresiones regulares?
Además de los capítulos de Benchmarking y Profiling, consulte el capítulo de expresiones regulares para algunas herramientas. –
perl -Mre = depurar/usar re 'depurar'; –