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

数组 – 迭代Perl数组的最佳方式

发布时间:2020-12-15 21:28:53 所属栏目:大数据 来源:网络整理
导读:哪个是最好的实现(在速度和内存使用方面)迭代Perl数组?有什么更好的方法吗? (@Array不需要保留)。 实施1 foreach (@Array){ SubRoutine($_);} 实施2 while($Element=shift(@Array)){ SubRoutine($Element);} 实施3 while(scalar(@Array) !=0){ $Element=sh
哪个是最好的实现(在速度和内存使用方面)迭代Perl数组?有什么更好的方法吗? (@Array不需要保留)。

实施1

foreach (@Array)
{
      SubRoutine($_);
}

实施2

while($Element=shift(@Array))
{
      SubRoutine($Element);
}

实施3

while(scalar(@Array) !=0)
{
      $Element=shift(@Array);
      SubRoutine($Element);
}

实施4

for my $i (0 .. $#Array)
{
      SubRoutine($Array[$i]);
}

实施5

map { SubRoutine($_) } @Array ;

解决方法

>在速度方面:#1和#4,但在大多数情况下不是太多。

你可以写一个基准来确认,但我怀疑你会发现#1和#4稍快,因为迭代工作是在C而不是Perl完成,不会发生不必要的复制数组元素。 ($ _别名为#1中的元素,但#2和#3实际上从数组中复制标量。)

#5可能类似。
>在内存使用:它们都是相同的,除了#5。

for(@a)是特殊情况下,以避免平铺数组。循环遍历数组的索引。
>在可读性方面:#1。
>在灵活性方面:#1 /#4和#5。

#2不支持为false的元素。 #2和#3是破坏性的。

(编辑:李大同)

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

    推荐文章
      热点阅读