2014-02-06 103 views
-1

以下兩條語句在內部是否相同? 大型陣列的性能會不會相同?Perl中的數組長度

my $Count=scalar @Array; #1 
my $Count=0; foreach (@Array) { $Count++;} # 2 
+2

在標量上下文中評估的數組將返回其大小,從而不需要使用「標量」關鍵字。 –

+0

比較'perl -MO =簡明,-exec -E'我的@Array =(4,3,2,1);我的$ Count =標量@Array;''和'perl -MO =簡明,-exec -E 'my @Array =(4,3,2,1); my $ Count = 0; foreach(@Array){$ Count ++;}'' – Quentin

+3

如果您想知道X在Perl中是否比Y更好,請使用[Benchmark](http://perldoc.perl.org/Benchmark.html)。 – ThisSuitIsBlackNot

回答

10

它們完全不同。 Perl知道數組的大小,所以第一個是一個簡單的操作(它不需要遍歷數組來確定它的大小)。

8

請不要擔心「最快」,而不必先做某種重要的測量。

不要擔心最快的問題,請考慮最清楚的方法。

但是,您的問題的具體答案是for循環會慢得多,因爲它正在計算一個Perl已經知道的值。