人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【VB2005ご相談】
現在1つのソリューションの中で複数のプロジェクト(画面)があり、それぞれがEXE形式になっています。
画面間の遷移はEXEを起動するような形なのですが、.NETアプリは起動が遅い?ので困っています。

こういったケースでは、メニュー.EXEのようなものを1つ置き、あとの画面は、クラスライブラリでdll化するのが作法なのでしょうか?
一般的にはどうなのでしょうか?
色々と開発経験がございましたら、お聞かせ願えないでしょうか?

●質問者: llusall
●カテゴリ:コンピュータ
✍キーワード:.NET DLL exe アプリ クラス
○ 状態 :終了
└ 回答数 : 2/3件

▽最新の回答へ

1 ● ardarim
●35ポイント

このあたりが参考になるのではないでしょうか。

ソースを変えずに高速化する(.NET Framework)

.NET Framework製のEXE/DLLファイルの起動を手軽に高速化「.NET R-Tune」

アプリケーション起動時間の短縮

どうでしょう。


個人的にはキャッシュを有効に使うことが鍵だと思います。.NET Frameworkでは、JITが動いたりするので最初の起動が遅いといったことが起こりがちです(2回目以降はJITコンパイルの結果がキャッシュされるので早くなる)。上記のサイトでも出てくるNGENなどは実行時にJITで行うものをプリコンパイルしてキャッシュしておくイメージです。


NGENについて(公式)

ネイティブ イメージ ジェネレータ (Ngen.exe)

◎質問者からの返答

とても参考になります。

ありがとうございました。


2 ● mzk
●35ポイント

>.NETアプリは起動が遅い?

.NETアプリでも小規模なものならそれほど気にならないと思いますが・・・質問するぐらいなので、中?大規模を想定して解説します。


まず、VB.NETで作成しているとのことですので、そのプログラムは起動するたびにMISLとよばれる中間コードをコンパイルするので、起動が遅いはずです。

画面遷移するたびにコンパイルしているわけですから、余計に時間を食います。

そのプログラムが使われる環境は特定されているのでしょうか?

特定されているのなら、MISLをあらかじめコンパイルした形のファイルを作るいわゆる「高速化ツール」を使うのが手っ取り早いです。

ツール自体は.NET Frameworksに付属しているのですが、操作はコンソール画面で行うので、慣れないなら以下のようなソフトを使うのがおすすめです。

http://www.forest.impress.co.jp/article/2006/04/06/dotnetrtune.h...

不特定多数の環境で動かすことを考慮しても、インストール時に高速化ツールを呼び出す仕組みにして高速化するということも可能です。(そもそもアンマネージドコードになって、影響が出るほどの環境依存があるのかは疑問です。。。)


実際に使ってみてストレスを感じるならdll化について考えてみても良いかもしれません。

dll化するのは綺麗にまとまって見えますけど、全く違う機能を持つプログラムならショートカットを作るにしても、複数のexeに分かれていた方が都合が良いときもあります。


問題は遷移の頻度です。

dllにしたって1回目にはロードしますし、一回きりの遷移ならそのままでも複数のexeで良いはずです。

各アプリケーションは他のアプリケーションを呼び出すと終了するのですよね?

そこを常駐するようにすればプログラムのリロードはなくなるのでDLL化するのと同じ効果が得られます。


結局、そういうことは適材適所で選択することです。

AdobeのPhotoshopにはImageReadyというソフトがバンドルされていて、それぞれは連動して動きます。あの規模のソフトだとユーザは意識してメモリを空けたいときもあります。だから下手にDLL化して一緒くたにされると意識してメモリを解放することが出来なくなったりしますよね。

それに最適化にはバグのリスクもあるし、必要以上の最適化も時間の無駄です。やるなら慎重にすることをおすすめします。

◎質問者からの返答

とても参考になります。

ありがとうございました。

----------------------------------

#もう少し、回答を募集してみます。

dll, exe に関して、私はこうしているよ

見たいな意見がありましたらお願いします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ