09/03/19 18:11:50
>>838
いや、400万回の空ループ(3番目のif文のテストに相当)を回すと
MATLABで0.01秒
Octave-MSVCで2.22秒で
200倍以上差があるんですけど、
それだけのループの中でやる演算にかかる時間に比べれば
ループのオーバーヘッドは無視出来るって事ですね
JITがどうのというのは、たぶんその程度のの差です
比較式については以下の例をあげます
100x100の行列の全要素を調べて正なら1、違ったら0の行列を返す場合
if文なら
A=randn(100);for ii=1:100,for jj=1:100,if A(ii,jj)>0,B(ii,jj)=1;else,B(ii,jj)=0;end;end;end;
MATLABで0.01秒、MSVCで0.36秒です
比較式で同じ事をした場合
A=randn(100);C=(A>0).*1;
でよくて
MATLABで0.0004秒、MSVCで0.0008秒です。
同じA行列で計算した後にB-Cするとゼロ行列が返るので同一の結果のようです。