Dan*_*age 4 perl profiling subroutine
我之前在Perl中编写了一些实用程序,我现在正在重写它们以便提供一些新的/更好的功能.然而,事情似乎比原始实用程序要慢得多,因此我决定使用NYTProf分析器运行一个.伟大的探究家顺便说一句,仍然试图找出其所有有用的功能.
所以无论如何,事实证明我的程序的93%用于调用GeneModel::CORE:match (opcode)子程序,我不知道这是什么.大多数Google点击其他人发布的NYTProf个人资料.我确实编写了GeneModel类/包,但我不知道这个子程序是什么,为什么它被调用了这么多次,或者为什么它需要这么长时间.有任何想法吗?
FMc*_*FMc 13
CORE:match是对正则表达式的调用 - 在这种情况下,在您的GeneModel包中.
例如,如果我们分析此脚本,Devel :: NYTProf会报告1000次调用Foo::CORE:match.
use strict;
use warnings;
package Foo;
my $s = 'foo foo';
$s =~ /foo/ for 1 .. 1000;
Run Code Online (Sandbox Code Playgroud)
Perl被编译为操作码.该mATCH操作导致匹配操作码.
> perl -MO=Terse -e'm//'
LISTOP (0x8c4b40) leave [1]
OP (0x8c4070) enter
COP (0x8c4780) nextstate
PMOP (0x8c4260) match
Run Code Online (Sandbox Code Playgroud)
这不是一个子程序,而只是表示这种方式,因为操作码分析是最近添加的,并且UI尚未进行彻底检查以将其考虑在内.简单来说,分析器告诉你大部分时间花在正则表达式引擎上.