Question

Quel est le meilleur moyen de profiler les regex Perl pour déterminer leur coût?

Était-ce utile?

La solution

Perl est fourni avec le module Indice de référence , qui peut contenir plusieurs exemples de code et répondre à ces questions. la question de "lequel est le plus rapide?". J'ai un Conseil Perl sur Principes de base du test de performances , et bien que cela n’utilise pas les expressions rationnelles en soi, il fournit une introduction rapide et utile au sujet, ainsi que références.

brian d foy a également un excellent chapitre sur l'analyse comparative dans son Maîtriser Perl livre. Il a eu la gentillesse de mettre le chapitre en ligne sous forme d'ébauche , qui vaut bien la lecture. Je ne peux vraiment pas le recommander assez.

Paul

Autres conseils

Vous venez de dire "utilisez le critère de référence". module ne répond pas vraiment à la question, cependant. L'analyse comparative d'une expression rationnelle diffère de l'analyse comparative d'un calcul. vous avez besoin d'une grande quantité de données réalistes pour pouvoir insister sur l'expression rationnelle comme de vraies données. Si la plupart de vos données correspondent, vous voulez une expression rationnelle qui corresponde rapidement; si la plupart échouent, vous voulez une expression régulière qui échoue rapidement. Ils pourraient finir par être la même expression rationnelle, mais peut-être pas.

Ma façon préférée serait de disposer d'un grand ensemble de données d'entrée dans l'ER, puis de traiter ces données N fois (par exemple, 100 000) pour voir combien de temps cela prend.

Ensuite, ajustez l'ER et essayez à nouveau (conservez tous les anciens ER sous forme de commentaires au cas où vous auriez besoin de les analyser à nouveau, qui sait quelles optimisations merveilleuses pourraient apparaître dans Perl 7?).

Il existe peut-être des outils permettant d’analyser les ER afin de vous donner des chemins d’exécution pour des entrées spécifiques (comme les outils d’analyse dans les SGBD), mais, comme Perl est le langage des paresseux (un commandement transmis par Larry lui-même), ne pas être dérangé d'aller le trouver: -).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top