投稿日 | : 2003/03/28(Fri) 11:42 |
投稿者 | : ひろぽん |
Eメール | : |
URL | : |
タイトル | : クラスは遅い? |
ファイルを読み込んで、変数に格納するプロシージャがあるのですが、
変数があまりにも多く、以外と時間もかかるため、変数の定義方法を変えて
高速格納化を目指してます。
今MDI環境で作成してますが、変数は全てクラスで定義していて、2次元
および3次元の配列はクラスではうまく表現できないため、それらの配列変数は
コレクションを用いてます。
昔、SDIで作成したときは、対象のプロシージャを含むモジュールの先頭部分で
Public変数(表現は悪いですが、クラスを用いずという意味)として定義してました。
この両者、つまり、「クラス(MDI)」と「Public変数(SDI)」で読込み
時間(格納時間)を比較した結果、後者の「Public変数」の方が3〜4倍程度
早い事が確認できてます。
(質問1)
遅くなった原因ですが、これはクラスを用いているせいでしょうか。それとも
MDIだからでしょうか。それともコレクションを使ったせいでしょうか。
分かるようでしたら、是非教えてください。
以上のような事から「クラス(MDI)」→「Public変数(MDI)」に変更しようか
どうか非常に迷ってます。せっかく、MDIにするためにクラスを導入したのに、
また「Public変数」に戻るのもしゃくですが、高速化が最大目標だから、
そうしたいと思ってます。
(質問2)
また「Public変数(MDI)」にする場合には、「Public変数(SDI)」で使っていた
変数を、子フォーム毎の変数を識別するため、下記の例のように配列化しなければ
ならないと思うのですが、本手法は一般的でしょうか?
Dim X As Long
↓
Dim X() As Long
…
WindowNo = WindowNo + 1 '子フォームを開く毎に加算
Redim X(WindowNo) As Long
以上の件、よろしくご教授下さい。