• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ループ中でのmy宣言と処理速度)

ループ中でのmy宣言と処理速度

このQ&Aのポイント
  • ループ中にmy宣言をいちいちすると処理速度は落ちてしまうのかを検証
  • ループの外で変数を宣言する方法とループの中で変数を宣言する方法がある
  • 変数をループの中で宣言する方が初期化が自動的に行われるが、メモリの解放と確保が繰り返される可能性がある

質問者が選んだベストアンサー

  • ベストアンサー
  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.1

質問者さんのコードで、とりあえずベンチマークを取ってみました。 質問者さんの予想通り、変数宣言をループの外(out of loop)でしたほうが、 ループの中(in loop)でするより1.5倍近く速いという結果になりました。 Benchmark: timing 10000 iterations of in loop, out of loop... ..  in loop: 4 wallclock secs ( 3.69 usr + 0.00 sys = 3.69 CPU) @ 2711.50/s (n=10000) out of loop: 2 wallclock secs ( 2.48 usr + 0.00 sys = 2.48 CPU) @ 4025.76/s (n=10000)         Rate  in loop out of loop in loop .   2711/s.   --   -33% out of loop 4026/s.   48%    -- 私の環境は、以下です。 CPU:PentimuM 1.73MHz OS:Windows XP SP2 Perl:Active Perl 5.8.8 試したコードは以下です。 use Benchmark qw(:all); my @str = ('a'x10) x 1024; my $r = timethese( 10000, { 'out of loop' => sub { my $i; my $len; for( $i=0 ; $i<1024 ; $i++){ $len = length($str[$i]); } }, 'in loop' => sub { my $i; for($i=0 ; $i<1024 ; $i++){ my $len = length($str[$i]); } } }); cmpthese $r;

kiki28
質問者

お礼

返事が遅くなって申し訳ありません!! 回答はすぐに読ませていただきました。 非常に参考になりました。少しプログラミングの難易度は上がりますがこのあたりを気にしたプログラミングを行っていこうと思うことができました。 ありがとうございました。

関連するQ&A