タイトルの通りです。Scilabに限らずインタプリタ処理をする言語では,ループ計算は遅くなります。 下記に示すのはforループを使用する場合と使用しない場合でどれぐらい計算スピードが変わるかの例です。どちらも
を計算しています。
//-------------------- 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;
i = [1:2000000];
J = sum((i./i)./i);
disp('time of vector calc (sec): ' + string(timing))
Forループを使用した場合としない場合で数10倍は計算時間が違います。試してみて下さい。