Perlについての質問箱 47箱目
■ このスレッドは過去ログ倉庫に格納されています
0314デフォルトの名無しさん
2011/06/19(日) 13:55:44.38コード上で 'for' と書かれているか 'foreach' と書かれているかに関係なく、
条件部が3文から成っていれば「for」ループと解釈され、
リストが置かれていれば「foreach」ループと解釈されるので「変わらない」。
リストの全要素に対して反復処理を行う場合は、「for」ループで
同様の処理を書くよりも専用の「foreach」ループの方が「速い」。
#!/usr/bin/perl -w
use strict;
use Benchmark 'timethese';
my @Array = (0..9,'A'..'Z','a'..'z') x 100;
timethese(-5, {
f1 => sub { for (my $i = 0; defined $Array[$i]; ++$i) {} },
f2 => sub { foreach (my $i = 0; defined $Array[$i]; ++$i) {} },
e1 => sub { foreach my $chr (@Array) { defined $chr } },
e2 => sub { for my $chr (@Array) { defined $chr } },
e3 => sub { my $i = 0; foreach my $chr (@Array) { defined $chr; ++$i } },
e4 => sub { my $i = 0; for my $chr (@Array) { defined $chr; ++$i } },
});
__END__
■ このスレッドは過去ログ倉庫に格納されています