« インストールしたC4DやインストールされたPCの情報の取得 | トップページ | MAXONのPluginCafeからダウンロードしたSDK関連の.hmcファイル(Windows HTML help)を開いても表示されない方へ… »

C4D COFFEEの配列変数をfor()で走査するとき、条件式にsizeof(配列変数)を使う?

前回、ポイントオブジェクトのGetPoint等の簡単なスピードテストをしました。
http://villager-and-c4d.cocolog-nifty.com/blog/2009/05/c4d-basepointge.html

その時にfor()を使ってポイント配列データを走査しました。
条件式に変数を使うのと、ポイントオブジェクトクラスのGetPointCount()メンバ関数を使う時のかかった時間を比べました。

今回は…

今回は、for()の条件式に変数とsizeof()の時間の消費を比較します。

配列変数のインデックス数 = sizeof(配列変数)

sizeof()関数は配列のインデックス数を取得します。

では、スクリプトを実行します。

/*
配列変数をfor()で走査するときに、条件式にsizeof(配列変数)/変数/定数を使った時の時間
2009.5.28
*/


main(doc , op)
{
  var max = 1000000;
  var ary = new(array , max);
  var i;
  var tm;

  //sizeof()を直接条件式に使います。
  tm = time();
  for(i = 0 ; i < sizeof(ary) ; i++){
    ary[i] = 0;
  }
  println(time() - tm);


  //sizeof()で取得した値を代入した変数を条件式に使います
  var lpc = sizeof(ary);
  tm = time();
  for(i = 0 ; i < lpc ; i++){
    ary[i] = 0;
  }
  println(time() - tm);


  //条件式に定数を使います。
  tm = time();
  for(i = 0 ; i < 1000000 ; i++){
    ary[i] = 0;
  }
  println(time() - tm);

}

結果は皆さんの想像の通りです。

単位:ミリ秒 1 2 3 4 5 6 7 8 9 10 平均
sizeof() 282 274 281 274 274 281 278 273 274 278 277.5
変数 214 213 215 214 221 214 213 220 216 217 214.0
定数 213 218 214 216 215 218 217 215 214 219 215.9

劇的に大差はないものの、sizeof()を使うより変数や定数の方が、処理にかかる時間を減らす事ができます。

今回のテストでは、sizeof()は約1.3倍ほど、時間がかかっています。

|

« インストールしたC4DやインストールされたPCの情報の取得 | トップページ | MAXONのPluginCafeからダウンロードしたSDK関連の.hmcファイル(Windows HTML help)を開いても表示されない方へ… »