- - PR -
VB.VETで、処理速度を早くしたいのですが
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-12-22 13:21
VB.NET初心者で、VBA(主にEXCEL)から.NETへの移行を行っています。
そもそもVBAからの移行の動機が、VB.NETの方が早い、ということでした。 単純にVBAのプログラムをVB.NETに移行したら、処理時間が40%減でした。 元データが大量なので、出来ればもう少し早く(70%減くらい)なればと 思っています。プログラムの内容としては、 ADOでSQLServerから元データを読み込み、通常のVBAでエクセルから処理用 のデータを読み込み、後はひたすら手続型のプログラムで処理をこなして、 テキストファイルとエクセルファイルに結果を出す、というものです。 処理で多いのは、 for i=1 to 100 for j = 1 to 12 a(i,j)=a(i,j)+b(1,j)*c(i,J) next next というループで、このaという変数は100くらいあります。 VBAではすべて標準モジュールを使っており、クラスモジュールは使ったことがありません。 処理速度を上げる方法、または、このようなプログラムを効率的にする方法、 参考書などをご存知の方はお教えいただけないでしょうか。 | ||||
|
投稿日時: 2003-12-22 13:30
.NETでのプログラミングはできるのでしょうか。
それを教えてくれないと、プログラムを効率的にする方法、とかいわれても 困るのだが... | ||||
|
投稿日時: 2003-12-22 13:37
.NETでは、配列は0から始まって、Count - 1までですので、ご注意。 Dim array(100) as String と宣言したら、使えるのはarray(0)〜array(99) for cnt = 0 to array.length - 1 next | ||||
|
投稿日時: 2003-12-22 14:13
引用:--------------------------------------------------------------------------
七味唐辛子さん(2003-12-22 13:30) .NETでのプログラミングはできるのでしょうか。 それを教えてくれないと、プログラムを効率的にする方法、とかいわれても 困るのだが... -------------------------------------------------------------------------- なにせ初心者なので 「.NETでのプログラミングはできる」という意味が・・・ できることは、前の書き込みに書いたような内容のプルグラムを、そのまま.NET のプログラムに移行した、というくらいでしょうか。 VB.NETの初心者向けの本は結構読みましたので、書いてあることは理解できます。 ただ、それを自分のプログラムにどう適用すると効率的になるかが、わからない でいます。 | ||||
|
投稿日時: 2003-12-22 17:53
プロファイリングでもしてみては?
| ||||
|
投稿日時: 2003-12-22 23:16
C#ではそうなんですが、VB.NETでは0〜100だったりするんですね〜 うーん実に混乱の元な気がする。 # まあ、元々BASIC系はこうなので仕方ないですが。 | ||||
|
投稿日時: 2003-12-22 23:32
これって、β1で「0-99」、β2で「1-100」と、2転3転していませんでしたっけ?いや、どこかのニュース記事を読んだだけですが。。。「Option Base」の扱いをどうとかこうとか。 #とりあえず、Cに倣って?「0〜99」で使っているので、 #余分なメモリが確保されているということ以上の害はないので良しにしておこう | ||||
|
投稿日時: 2003-12-23 12:41
VBで時間の掛かる行列計算は、C/C++で処理関数をDLLに記述し、VBから その関数を行列の参照渡しで呼び出す方法が考えられます。 少し"unmanaged"になりますが... |