如何在库中使用NYTProf

时间:2010-07-30 15:29:55

标签: perl api profiling profiler

我想知道Devel::NYTProf是否可以用作另一个库中的库。我想做类似以下的事情

around 'somesub' => sub {
    my $orig = shift;
    my $self = shift;
    start-timing;
    $self->$orig(@_);
    end-timing;
    print '$time';
}

但是根据它的文档,我无法确定它是否可以像这样使用。可能吗?有人可以告诉我我会做的API调用吗?

2 个答案:

答案 0 :(得分:4)

最简单,最可靠的事情是:

  1. 在库中添加DB::enable_profileDB::disable_profile次调用(您可能需要先检查是否先定义了潜艇,以避免在未加载NYTProf时发生破损)。
  2. 在环境中使用-d:NYTProf和NYTPROF=start=no启动perl。
  3. 所有这些都在Devel::NYTProf docs中清楚地解释了。

    您可以尝试让您的库有条件地加载NYTProf,但这里的交易是只有加载NYTProf后编译的东西才能得到任何跟踪点。这可能听起来完全没问题,因为您只想对您的库进行概要分析,但是如果您的库调出(或回调)任何其他代码并且我没有对其进行测试,则不清楚将会发生什么。制作简单版本make可能要容易得多:)

答案 1 :(得分:0)

我不认为它可以这样使用。但您可以查看Aspect::Library::ProfilerAspect::Library::Timer