- PR -

.NET Windowsフォームのパフォーマンスについて

投稿者投稿内容
jemini_777
会議室デビュー日: 2003/12/05
投稿数: 17
投稿日時: 2004-10-15 23:27
お世話になります。VB.NETを初めて2ヶ月の初心者です。

Windowsフォームのアプリケーションを作成しておりますが
フォームを開く際のパフォーマンスが悪くて困っております。
MDIフォームで作成しており、1画面につき100〜200個
ほどのコントロールが存在しています。
フォームを開く際にコントロール数に比例して起動時間がかかります。
30秒〜40秒ほどかかり実用に耐えられません。

フォームの開き方は以下のようにしております。
Dim sForm As frmABC = New frmABC  ←ここが遅い!
sForm .Show() ※ダイアログではない。

悲しくなるくらい遅いのですが、.NETとはそういうもの
なのでしょうか?
実際に皆さんの意見をお聞かせ願えたらと思います。

環境
WindowsXPProSP2
VisualStudio2003
InputMan.NET2.0 ※最新パッチ適用済み
Spread.NET ※最新パッチ適用済み
Tatsu
会議室デビュー日: 2003/11/12
投稿数: 2
投稿日時: 2004-10-16 01:02
jemini_777さん、はじめまして。

コントロールの場合、インスタンス生成が多くなるので
遅くなるのではないでしょうか。

ラベルあたりはPaintイベントを処理するときにフォームに直書きする
なんてことをやって処理速度を稼いでいました。

ご参考までに。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-10-16 04:12
引用:

MDIフォームで作成しており、1画面につき100〜200個
ほどのコントロールが存在しています。



コントロールの種類にもよりますが、そんなにコントロールを貼ったら、.NET じゃなくてもかなり重たくなります。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-10-16 10:06
引用:

jemini_777さんの書き込み (2004-10-15 23:27) より:

MDIフォームで作成しており、1画面につき100〜200個
ほどのコントロールが存在しています。


 そんなに置けるものなのですか?見難そう・・・
_________________
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-10-16 13:40
さすがに200はやりすぎですよね。
画面の構成を変える(画面遷移など)とか。

あるいは自分でコントロールを作ったらどうでしょうか。
200個とかってのはおそらく「ComboBox2個とTextBox5個がまとまったものが12個並んでいる」とかそんな感じですよね。
「ComboBox2個とTextBox5個がまとまったもの」の機能を持ったコントロールを自分で作ってみては?
もちろん、内部でComboBoxやTextBoxを使ってしまっては元も子もありませんけど。
jemini_777
会議室デビュー日: 2003/12/05
投稿数: 17
投稿日時: 2004-10-16 23:33
返信ありがとうございます。
実はこのプロジェクトはVB6のシステムの作り変えで
画面構成等はまったく同じで.netに移行したもの
なのですが、VB6でコントロール数が200とかでも
サクサク起動していたのですが、.NETでここまで重く
なるとは思いませんでした。
ngenも試したのですがあまり効果がありませんでした。

VB6と同じ感覚でつくるのは間違いなのでしょうか?
浮嶋
会議室デビュー日: 2004/01/08
投稿数: 14
投稿日時: 2004-10-17 00:28
>コントロール数が200

インスタンスの作成で時間がかかることは仕方がありませんが、
30秒〜40秒というのは異常ですよね。

コントロールのインスタンス作成以外の初期化で時間がかかっている
ということはないですか?



渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-10-17 00:29
引用:

VB6と同じ感覚でつくるのは間違いなのでしょうか?



一般論で言えば時と場合によります。
質問の件について言えば、現実に目的とするパフォーマンスが得られていないのですから、見直すべきでしょう。
てか、パフォーマンスの劣化が無くても、1枚のフォームにコントロールを100個も200個も散りばめるような設計は見直すべきだと思いますが。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/

スキルアップ/キャリアアップ(JOB@IT)