2009-01-06 16 views

Respuesta

13

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

+0

Además de los capítulos de Benchmarking y Profiling, consulte el capítulo de expresiones regulares para algunas herramientas. –

+0

perl -Mre = depurar/usar re 'depurar'; –

0

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 :-).

3

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.

Cuestiones relacionadas