大佬教程收集整理的这篇文章主要介绍了如何在Perl列表中找到值的数量?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有一个“空括号”成语,可以用来获取元素的数量:
@H_623_2@my $n = () = ('a','c'); # $n = 3它在内部是等同的
@H_623_2@my $n = @{[ 'a','c' ]};?
有两种方法可以回答这个问题:第一,正确的方法:尝试弄清楚如何在源中处理这个问题.是否有一个特殊情况可以分配给在标量上下文中评估的空列表?
作为懒惰和无知的类型,我选择使用@L_450_0@:
#!/usr/bin/perl use Strict; use warnings; use Benchmark qw( cmpthese ); cmpthese -5,{ goatse => sub { my $n = () = 'A' .. 'Z' },anon => sub { my $n = @{[ 'A' .. 'Z' ]}},};
我经常运行基准测试,并且在所有情况下,对空列表的分配都略有优势.如果差异纯粹是随机的,那么观察10个有利于goatse的时间的概率小于0.1%,所以我假设存在某种短路.
另一方面,正如运行评论中发布的基准@daotoad,可能会给出更完整的图片:
#!/usr/bin/perl use Strict; use warnings; use Benchmark qw( cmpthese ); use constant START => 1; use constant STOP => 1000; my $start = START; my $stop = STOP; cmpthese -5,{ anon => sub { my $n = @{[ $start .. $stop ]}},goatse => sub { my $n = () = $start .. $stop },canon => sub { my $n = @{[ START .. STOP ]}},cgoatse => sub { my $n = () = START .. STOP },};
我机器上的典型结果(Windows XP Pro SP3,Core 2 Duo,2 Gb内存,ActiveState perl 5.10.1.1006):
Rate anon cgoatse goatse canon anon 5207/s -- -45% -49% -51% cgoatse 9522/s 83% -- -7% -10% goatse 10201/s 96% 7% -- -4% canon 10636/s 104% 12% 4% --
与:
use constant START => 'AAAA'; use constant STOP => 'ZZZZ';
结果是:
Rate anon goatse cgoatse canon anon 1.73/s -- -12% -16% -17% goatse 1.98/s 14% -- -4% -5% cgoatse 2.06/s 19% 4% -- -1% canon 2.08/s 20% 5% 1% --
结论:
如果有疑问,请使用我的$n =()= …;
以上是大佬教程为你收集整理的如何在Perl列表中找到值的数量?全部内容,希望文章能够帮你解决如何在Perl列表中找到值的数量?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。