加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

为什么Perl编译diagnostics.pm如果我的代码没有诊断?

发布时间:2020-12-15 21:23:24 所属栏目:大数据 来源:网络整理
导读:当我查看 Devel::NYTProf v4的输出为 CGI program,我遇到了诊断.pm在报告源代码文件 – 排序的时间,然后名称。 首先我不明白为什么会在生产代码。我深入挖掘报告,发现它被称为main :: BEGIN @ 17。反过来,这是,下面这一行: # spent 34μs (26+8) withi
当我查看 Devel::NYTProf v4的输出为 CGI program,我遇到了诊断.pm在报告源代码文件 – 排序的时间,然后名称。

首先我不明白为什么会在生产代码。我深入挖掘报告,发现它被称为main :: BEGIN @ 17。反过来,这是,下面这一行:

# spent 34μs (26+8) within main::BEGIN@15 which was called: # once (26μs+8μs) by main::RUNTIME at line 15
use strict;
# spent 34μs making 1 call to main::BEGIN@15 # spent 8μs making 1 call to strict::import

# spent 36μs (17+19) within main::BEGIN@16 which was called: # once (17μs+19μs) by main::RUNTIME at line 16
use warnings;

# spent 36μs making 1 call to main::BEGIN@16 # spent 19μs making 1 call to warnings::import

# spent 292ms (171+121) within main::BEGIN@17 which was called: # once (171ms+121ms) by main::RUNTIME at line 17
no diagnostics;
# spent 292ms making 1 call to main::BEGIN@17

# spent 135μs (27+108) within main::BEGIN@18 which was called: # once (27μs+108μs) by main::RUNTIME at line 18
use Carp qw( carp croak );

所以这似乎是罪魁祸首。我删除了无诊断线,呼叫去了,有效地节约了大约300ms的时间。

这里是perldoc use说关于no关键字:

There’s a corresponding no declaration that unimports meanings
imported by use,i.e.,it calls unimport Module LIST instead of
import. It behaves just as import does with VERSION,an omitted or
empty LIST,or no unimport method being found.

06001

所以这里是我的实际问题:我是否正确的假设,如果我调用没有诊断,它实际上加载之前,它被卸载?

是没有诊断类似这段代码的调用吗?

BEGIN {
  require diagnostics.pm;
  diagnostics->unimport;
}

因此,是不是一个坏主意,只是unimport的东西,从来没有被导入,因为实际上加载它首先?

解决方法

Am I correct in assuming that if I call no diagnostics,it is actually loaded before it is unimported?

是。它的确完全相当于

BEGIN {
  require diagnostics;
  diagnostics->unimport;
}

所以没有模块命令实际加载和编译模块;包括在BEGIN块等中执行不在任何子中的代码;对于给定模块的所有依赖性(对于每个使用/需求内部)是相同的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读