掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB.NETの演算速度がVB6よりも遅いのを解決するには? (ID:117370)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ちょっと違うかもしれませんが配列が沢山使われていて物理メモリ上に収まりきっていなさそうなので、ちょっとしたヒントを。 配列が巨大で物理メモリ上に収まり切らない場合は、配列のメモリ上の配置順と次元の並び順とループのネスト順にも気を付けた方が良いです。 VB.NETはよくわかりませんが、 もし、メモリ上に Hz(0,0,0) Hz(1,0,0) ・・・ Hz(0,1,0) Hz(1,1,0) ・・・ Hz(0,0,1) Hz(1,0,1) と配置される仕様になっているなら、 ループのネスト順を入れ替えて影響がないなら > For x=0 to Mx > For y=0 to My-1 > For z=0 to Mz-1 を For z=0 to Mz-1 For y=0 to My-1 For x=0 to Mx に入れ替える方が速くなるかもしれません。 もし、ループのネスト順を入れ替える事が出来ないなら、配列の配列として Hz(x).yz(y,z)の様な使い方にするか、 Hz(x,y,z) -->HzRev(z,y,x) のように添え字の並び順を変える事も検討してみて下さい。 ポイントは、 「続けてアクセスする対象データは同じメモリページ上に収まるように配置する」 ということです。 そういう意味では、VB6の書き方になってしまいますが Type DataRecord Hz As Double Ey As Double Phyz As Double PTerm As Double HTerm1 As Double HTerm2 As Double HTerm3 As Double End Type Dim DataArrar As DataRecored(8000,8000,8000) の方が良いかもしれません。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.