「HSPってこうすると速いんだよね」とかよくありますが、最近あることに気がつきました。
周知の事実ならごめんなさい。
気づいたのは、
「配列の先頭に対して参照 or 代入を行うときに (0) を明示しないと速くなる」
ことです。
下は実験コード。
#include "d3m.hsp" repnum = 100000 dim A,100 A(2) = 3 b = 0 mes ""+repnum+" 回ループ" ;< 真面目に参照 > mes "\n真面目に参照 val = A(0)" wait 50 t1 = d3timer() repeat repnum b = A(0) loop t2 = d3timer() mes "所要時間 "+str(t2-t1)+" ms" ;< 横着参照 > mes "\n横着参照 val = A" wait 50 t1 = d3timer() repeat repnum b = A loop t2 = d3timer() mes "所要時間 "+str(t2-t1)+" ms" ;< 真面目に代入 > mes "\n真面目に代入 A(0) = val" wait 50 t1 = d3timer() repeat repnum A(0) = 3 loop t2 = d3timer() mes "所要時間 "+str(t2-t1)+" ms" ;< 横着代入 > mes "横着代入" wait 50 t1 = d3timer() repeat repnum A = 3 loop t2 = d3timer() mes "所要時間 "+str(t2-t1)+" ms"
今開発している3D描画モジュールでチマチマ高速化している最中に気づきました。
そうでなくても、みなさんベクトルとかで
とか
V(0) = ?,?,?,....
とかやりませんか?
F(0) = V(0),V(1),...
(0) を書かないだけでいくらか高速になるようです。コードの保守性は僅かに下がると思いますが。
もし、逆に遅くなった人がいましたら気が向いたら教えてくれるとありがたいです。
「いや、全然速くならないんだが...」とか。