我想知道Devel::NYTProf是否可以用作另一个库中的库。我想做类似以下的事情
around 'somesub' => sub {
my $orig = shift;
my $self = shift;
start-timing;
$self->$orig(@_);
end-timing;
print '$time';
}
但是根据它的文档,我无法确定它是否可以像这样使用。可能吗?有人可以告诉我我会做的API调用吗?
答案 0 :(得分:4)
最简单,最可靠的事情是:
DB::enable_profile
和DB::disable_profile
次调用(您可能需要先检查是否先定义了潜艇,以避免在未加载NYTProf时发生破损)。NYTPROF=start=no
启动perl。所有这些都在Devel::NYTProf docs中清楚地解释了。
您可以尝试让您的库有条件地加载NYTProf,但这里的交易是只有加载NYTProf后编译的东西才能得到任何跟踪点。这可能听起来完全没问题,因为您只想对您的库进行概要分析,但是如果您的库调出(或回调)任何其他代码并且我没有对其进行测试,则不清楚将会发生什么。制作简单版本make可能要容易得多:)
答案 1 :(得分:0)
我不认为它可以这样使用。但您可以查看Aspect::Library::Profiler或Aspect::Library::Timer