- - PR -
vb.netで作成したアプリの、起動時間について
1
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-17 14:43
メモリ 768
CPU Celeron 2.53GHz アプリ vb.net2003 VB.net 2003 を使用してWindowsアプリケーションを開発しております。 今回は、作成したアプリケーションの起動時間について、相談したいと思います。 Windowsを起動し、安定状態になったところで、作成したアプリを 起動すると、フォームを開くのが完了するまでに10数秒くらい かかってしまいます。(サードパーティー製のコントロールを貼り付けている) 一度終了して、再度アプリを起動すると、2,3秒でフォームは開きます。 (二回目は、早くなる。) ちなみに、フォームのみの実行ファイルを作成しても、一回目の起動は、 二回目に比べて少しだけ起動時間は長くなります。 同じ経験をされている方がいらっしゃると思います。 どうやって、改善や、解決をされたのでしょうか。 ユーザに出すとなると、さすがに10数秒待つのは、、、。 「ngen.exe」を使用すると、少しは早くなるかもしれないとあったのですが、 体感できるほど早くはなりませんでした。 | ||||||||||||
|
投稿日時: 2005-10-17 15:02
初回は .NET Framework の起動時間もありますからね。
あまりに重いコンポーネントを多用したり、 単純にコントロールの数が多い場合は致し方ないと思います。 そうならないように画面設計するのが本来の回避方法かもしれません。 (アクセシビリティ・ユーザビリティなどを考慮しても) とりあえず、現在のフォームがどんな構成になっているかも提示すると良いかもしれません。
ネイティブ イメージ ジェネレータ (Ngen.exe) の解説を参照してみてください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2005-10-17 15:06
こんにちは。
こんなもの見つけました。 Windowsアプリの起動時間、どれくらいかかってますか? Windows起動時に、裏で起動しておくのはまずいでしょうか? CLRの起動に時間がかかる、ということが起こり得るのであれば、 何もしない軽量のダミーアプリの起動でも十分かも知れません。 #必要に迫られたことが無いので、未検証ですが。 #3ページ目をリンク先に指定していたので修正(恥 [ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-10-17 15:16 ] | ||||||||||||
|
投稿日時: 2005-10-17 16:26
.NETアプリに限らずどのアプリケーションでも、初回起動に時間がかかるのは同じですが、
それだけのスペックのマシンで10数秒というのは、やはり設計を見直すべきではないでしょうか。 というか、初回と二回目でそれだけの差が出るというところで、ものすごいフォームを想像しますが…。 改善方法はものによるので、なんとも言えませんよね…。 起動時に必ずしも必要のないロジックや領域やコントロールを動的に割り当てるようにすることが最初に思いつきますが、 場合によっては初期化のロジックがスマートでないから、きれいにするとか…。 画像リソースが多いのなら、フォーマットを変えれば読み込み時間が短くなるかも知れないし…。 | ||||||||||||
|
投稿日時: 2005-10-17 18:57
書き込みしたものです。
色々なご返答ありがとうございます。 ご指摘いただきました情報を追加いたします。 フォーム上のコントロールは、コマンドボタン12個、ラベル12個 StatusBarを1つと、GrapeCityのEl Tabelleを貼り付けております。 El Tabelle は、デザイナでデザインしたものを貼り付けております。 おそらく、このEl Tabelleが一番重いと感じているのですが、、。 問い合わせをしたのですが、いい返事を頂けなかったので、 投稿してみました。 | ||||||||||||
|
投稿日時: 2005-10-17 23:36
なら、その Table を外した状態のモノを作ってみて、起動時間がどれだけ変化するくらいは調べてみてはどうですか? | ||||||||||||
|
投稿日時: 2005-10-17 23:59
お世話になります。
私も以前、El Tabelleを使った事があるのですが、 デザイナで色々弄くったものをロードするとめちゃくちゃ重いです。 特に、計算式なんかを埋め込んでると相当時間がかかります。 InitializeComponentのなかで、 Console.WriteLine(Environment.TickCount) Formのコントロールのプロパティをセットするコード Console.WriteLine(Environment.TickCount) のような感じで時間を計測してみましたが、 デザイナで色々弄くったEl Tabelleの部分が 莫大な時間が掛かった記憶があります。 # 結局デザイナで弄くるのはやめて、 # ロードしてからコードで弄くって対応しました。 | ||||||||||||
1
