複数の独自DLLを用いて、VB.NETを早く起動させる方法は?


OniTaka  2006-10-31 23:23:40  No: 133928

お世話になります。

VB.NET2003について2点お聞きしたいのですが

−−−−−−−−−−−−−[環境]−−−−−−−−−−−−−−−−−−−−
開発端末
  OS      :Windows2000
  実行環境:.NET FrameWork1.1(VisualStudio.NET2003)
  
クライアント端末
  OS      :Windows2000
  実行環境:.NET FrameWork1.1
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

という環境において
独自DLL(VB.NET2003で作成)を用いてVB.NET2003で作成されたアプリを
高速に起動させる方法はないでしょうか?
(現行の平均26秒ぐらいが、10秒ぐらいに縮まるぐらいでも嬉しいです)

現状、独自の部品を作り、開発を行っているのですが
フォームに独自DLLで作られたテキストボックスを置いて
レスポンスを図ったとき、早いときで15秒でフォームが起動するのですが、遅いときで40秒以上かかります。。。
(5回ほど起動時間のサンプルを取り、平均を出しましたが・・・おおよそ、26秒です。)

で、この起動時間の差も謎です。
当方としては、DLLのベースアドレスが被ってしまっており、メモリの再配置によるオーバーヘッドが
起動時間の差ではないかと思っているので、VCのToolで・・・ReBase.exeを使って、メモリのアドレス(400000番代)から指定しても
起動時間の差が埋まりませんでした…

ReBase.exeの使い方として・・・
以下のようにしました

ReBase.Exe -b 400000 Messages.dll Procedure.dll Loder.exe Controls.dll Database.dll Forms.dll WA.exe

これで・・・動的にメモリアドレスを割当てられましたよね?
後、一応・・・ngen.exeも試しましたが、起動時間は変わりませんでした。

どなたかわかります方がいらっしゃいましたら、御回答御願いします


OniTaka  2006-11-02 01:17:27  No: 133929

少し加筆します。

現在、起動時間の問題について
わかりやすいように・・・以下のようなことを行い
作成したDLLを継承させてました。

1:ソリューションエクスプローラからクラスライブラリのプロジェクトを追加
2:追加したクラスの継承先を System.Windows.Forms.Form  にする
3:コンパイル

次に、テスト用のプロジェクトを以下のとおりに作成しました。

1:ソリューションエクスプローラからWindowsアプリケーションのプロジェクトを追加
2:参照設定で、.NETタブから、先程、コンパイルしてできたDLLを参照
3:フォームのソースを開いて、継承先を先程作成したDLLのフォームに変更

の一連の操作を行い、リコンパイルして
OSを再起動した後に作成したフォームを起動してみたところ
起動時間に7秒〜20秒を要しましたが、独自に作成したDLLというのは・・・・・・
これぐらい、時間がかかるものなのでしょうか?

もしかして、やり方が間違っているのでしょうか…。。。
どなたかのご意見をお待ちしてます。。。
(DLLのプロジェクトをWindowsコントロールライブラリでやっても一緒でした…)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加