通过执行以下操作,我真的能从中受益吗(与仅在两个if语句中将实际的正则表达式代替$ {pcr}相对)? (实际数据集中还有更多行,但仅使用DATA为例。
my $defs = 0;
my $tests = 0;
my $pcr = qr/\s*[\/\\]?\s*/;
while (<DATA>)
{
$defs = ($1 ? 0 : 1) if /<(${pcr})definitions/;
$tests = ($1 ? 0 : 1) if /<(${pcr})tests/;
print "defs: $defs\ntests: $tests\n\n";
}
__DATA__
<what>
</what>
<definitions>
<one />
</definitions>
<tests>
<two />
<three />
</tests>
最佳答案
针对您的原始示例运行一些基准测试,一个没有PCR的示例,以及另一个在循环外部定义的definitions
和tests
使用两个不同PCR的示例,我得到了半百万次迭代的以下结果机:
Rate no_pcr orig pcr_before
no_pcr 130208/s -- -1% -5%
orig 131579/s 1% -- -4%
pcr_before 137741/s 6% 5% --
这样看来,要么没有任何收益,要么收益很小。