我如何描述Perl正则表达式?

时间:2009-01-06 04:33:14

标签: regex perl profiling

分析Perl正则表达式以确定它们有多贵的最佳方法是什么?

3 个答案:

答案 0 :(得分:13)

Perl附带Benchmark模块,可以获取大量代码示例,并回答“哪一个更快?”的问题。我在Perl Tip上有一个Benchmarking Basics,虽然它本身不使用正则表达式,但它确实提供了对该主题的快速有用的介绍,以及进一步的参考。

brian d foy在他的Mastering Perl书中也有关于基准测试的优秀章节。他非常友好地提出chapter on-line as a draft,这非常值得一读。我真的不能推荐它。

答案 1 :(得分:3)

但是,只是说“使用基准”模块并没有真正回答这个问题。对正则表达式进行基准测试不同于对计算进行基准测试;你需要大量的真实数据,所以你可以像真实数据那样强调正则表达式。如果您的大部分数据都匹配,那么您需要一个快速匹配的正则表达式;如果大多数都会失败,你想要一个快速失败的正则表达式。他们可能会成为同一个正则表达式,但也许不是。

答案 2 :(得分:0)

我首选的方法是向RE提供大量输入数据,然后处理该数据N次(例如100,000次)以查看需要多长时间。

然后调整RE并重试(将所有旧的RE保留为注释,以防将来需要再次对它们进行基准测试,谁知道Perl 7中可能会出现什么奇妙的优化?)。

可能有一些工具可以分析RE来为特定输入提供执行路径(比如DBMS中的分析工具)但是,因为Perl是懒惰的语言(Larry自己传达的诫命),我无法去找它: - )。