はじめまして。私は大学の研究室で現在ちょっとした電磁界の
シミュレーションプログラムを作っているのですが、VB6からVB.NET2003に乗り換えたところ、
実行速度が2〜3分の一程度にまで遅くなってしまったので、
皆さんにお知恵を拝借させていただきたいと思います。
プログラムの内容自体はとても単純なもので、ひたすら電界、磁界のxyz成分を計算してゆくものです。
条件分岐すらほとんどありません。(最後の境界条件の計算に一回だけ)
コードの概要を書かせていただくと、
For t=1 to Mt
For x=0 to Mx
For y=0 to My-1
For z=0 to Mz-1
'磁界x成分Hx(x,y,z)の計算
next
next
next
'以下同様にHy(x,y,z),Hz(x,y,z),Ex(x,y,z),Ey(x,y,z),Ez(x,y,z)を計算。
'境界条件の計算。
call Mur(Ex,Ey,Ez,Hx,Hy,Hz,'以下係数の配列境界の座標など)
Next
という具合になります。Mt=8000,電磁界の配列はMx=My=Mz=50の3次元配列です。
VB6の場合は最適化の詳細チェックをすべて入れた条件で、
VB.NETでは整数のオーバーフローチェックオフをオンにしました。
JITコンパイルを行ったあとの演算自体は高速化されるものだと思って期待していたのですが、
目に見えて遅くなってしまったのでちょっと残念な気分です。
何か高速化するテクニックはございませんでしょうか?
ツイート | ![]() |