パフォーマンステスト
ActionScript // 2009年03月08日 - 21:42
繰り返し処理にはいろんな方法がある。おなじみのfor文から、for each..in文、while文など。配列から値を取り出して何かやる場合、どんな方法が一番速いんだろう?と思ってやってみた。
処理の内容は
1) 0~9999までの数値を配列にプッシュ。10000個の要素を持った配列ができる。
2) 配列の中身を順に取り出して、テキスト出力する。
3) すべての要素を出力したら終了。
これをそれぞれやり方を変えて3回測定する。
前処理
var array:Array = new Array();
for (var i:int = 0; i < 10000; i++ )
{
array.push(i);
}
速度テスト
[1]for文:いつものパターン
for ( var j:int = 0; j < array.length; j++ )
{
textarea.appendText(array[j] + "\n");
}
結果:
1回目測定:17.772秒
2回目測定:18.696秒
3回目測定:18.474秒
平均:18.314秒
[2]for文:IE+JSだと効果のあるパターン
for ( var j:int = 0; j < array.length; j++ )
{
var num:int = array[j];
textarea.appendText(num + "\n");
}
結果:
1回目測定:17.855秒
2回目測定:18.067秒
3回目測定:18.342秒
平均:18.088秒
[3]for文:lengthをあらかじめ変数に格納しておくパターン
for ( var j:int = 0,len:int = array.length; j < len; j++ )
{
var num:int = array[j];
textarea.appendText(num + "\n");
}
結果:
1回目測定:18.009秒
2回目測定:18.526秒
3回目測定:18.473秒
平均:18.336秒
[4]for each..in文
for each(var str:int in array)
{
textarea.appendText(str + "\n");
}
結果:
1回目測定:18.067秒
2回目測定:18.726秒
3回目測定:18.579秒
平均:18.457秒
[5]while文
var j:int = 0;
while (j < array.length)
{
textarea.appendText(array[j] + "\n");
j++;
}
結果:
1回目測定:18.226秒
2回目測定:18.652秒
3回目測定:18.623秒
平均:18.500秒
平均値
[1]18.314秒
[2]18.088秒
[3]18.336秒
[4]18.457秒
[5]18.500秒
結果としては[2]for文:IE+JSだと効果のあるパターンが一番速かった。ただ、一番遅かった[5]while文との差はわずか0.412秒しかなく、PCのヘルス状態にも左右されるためこれは誤差範囲なのかも。まぁ、最終的な結果としてはどれも変わらないといったところで、「慣れたやり方でできる」のが結論といったところでしょう。ちなみに今回はFlash Player 10.0 r12でテストしました。
コメント
ページトップに戻る