琉球大学 理学部 物質地球科学科 物理系

NMR物性研究室

3. ループ計算は遅いので,できるだけ使わない

 タイトルの通りです。Scilabに限らずインタプリタ処理をする言語では,ループ計算は遅くなります。 下記に示すのはforループを使用する場合と使用しない場合でどれぐらい計算スピードが変わるかの例です。どちらも

を計算しています。

 

Scilab

  //-------------------- for loop --------------------//

  clear

  timer();

  J = 0;

  for i = 1:2000000;

  J = J + 1/i;

  end

  J;

  timing = timer();

  disp('time of for loop (sec): ' + string(timing))

  //--------------------------------------------------//

 

  //------------- vector calc // no loop -------------//

  stacksize(50000000); //扱える行列の大きさを増やしておきます。

  clear;

  timer();

  i = [1:2000000];

  J = sum((i./i)./i);

  timing = timer();

  disp('time of vector calc (sec): ' + string(timing))

  //--------------------------------------------------//

 

 Forループを使用した場合としない場合で数10倍は計算時間が違います。試してみて下さい。