- - PR -
.NET Windowsフォームのパフォーマンスについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-10-17 00:45
ハードウェアの処理能力がそのままなら、遅くなって当然ですが。。。
そのへんはどうですか? あと、Release 構成ではどうですか? | ||||||||
|
投稿日時: 2004-10-17 02:23
南部です。
なんとなく、ボタン200個貼り付けてみました。 初回実行は1秒弱、2回目以降は0.5秒くらい ボタンじゃ、軽すぎかなぁと データグリッド200個いってみました。 初回実行1秒くらい、2回目以降1秒弱 まあ、ただ貼り付けただけですけど。 環境は Window Server 2003 .NET Framework1.1 SP1 Pen4 2.53GHz 1GB RAM です。
このクラスのコンストラクタでインスタンス生成以外に 時間かかっていそうなところはないですか? | ||||||||
|
投稿日時: 2004-10-17 06:41
同じく、コンボボックスを200個貼り付けてみました。2秒以内に終わってますね。(InitializeComponentメソッド呼び出しの前後で計測) 「時間がかかる」というときの“常識”ですが、「どの処理で、どれだけの時間がかかっているか、明確にする。処理が細分化できる限り細かく調べる」ということです。 たとえば、インスタンス化の中でデータベースとの接続をしてて、そちらで時間がかかっているなら、「Windowsフォームのパフォーマンス」が問題ではないですよね。呼び出し元で「コンストラクタで時間がかかっている」ことはわかりました。では、コンストラクタの中身を、細分化しましょう。 _________________ | ||||||||
|
投稿日時: 2004-10-18 08:09
お世話になります。
フォームの開き方は以下のようにしておりますのでインスタンスの生成に時間がかかっているとは思うのですが自分なりに検証してみました。 Dim sForm As frmABC = New frmABC ←ここが遅い! sForm .Show() ※ダイアログではない。 空のプロジェクトで以下の内容で起動時の時間を取得 テキストボックス×200個 1271.8288ミリ秒 コンボボックス ×200個 3284.7232ミリ秒 INPUTMANのEDITボックス ×200個 4176.0048ミリ秒 INPUTMANのコンボボックス ×200個 3705.328ミリ秒 それほど遅くはないです。 実際はパネル・スプレッドシート・ラベルなど組み合わせておりますので 単純比較はできないですが。 まだまだ検証してみます。 開発マシン cup celelon2.4Ghz mem 1G | ||||||||
|
投稿日時: 2004-10-18 09:13
データグリッドでも、バインドしなければそんなもんですか (^^;;; とすると、コントロールの作成以外のところで cpu を消費している可能性が高いですね。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||||||
|
投稿日時: 2004-10-18 16:13
frmABCのコンストラクタで何か別の処理してませんか? それかForm_Loadイベントあたりで DBへ接続してデータを取得しているとか | ||||||||
|
投稿日時: 2004-10-18 16:29
New が遅いとの事なので、ロードのタイミングまで行ってないでしょうね。 コンストラクタ内(InitializeComponent呼び出し後の部分)でいろいろと処理をやっているなら、そこが原因の可能性はありますが。 コントロール大量の件ですが、プロパティ等の設定を追加すると10倍遅くなるかもしれません、なんとなく。 | ||||||||
|
投稿日時: 2004-10-18 21:03
|