私は非常に高性能なWinFormsアプリケーションで作業しています。サーバーからデータを取得し、これらの結果をGUIのテキストボックスに表示します。これらのテキストボックスをコード内のいくつかの変数にバインドするか、コードにtextbox1.text = dataのようなものを含める方が、パフォーマンスの面で優れているでしょうか。またはそれはまったく同じです
3 に答える
一部のビューにデータを入力する場合、パフォーマンスは(原則として)主な問題ではありません。
バインディングは、開発とさらなるメンテナンスの観点から便利です。ユーザーが値を編集した後、値をデータソースに戻すことを忘れることはできません。また、それらはデータ検証と緊密に結合されています。実際、WPFのような高度なバインディングエンジンは、データバインディングをGUIでデータを操作するための唯一の簡単な方法にします。
WinFormsのバインディングエンジンは、WPFよりも(機能の観点から)単純ですが、それでも。よりも優れていtextbox1.text = data
ます。
それは本当に重要ではありません。重要なのは、データをフェッチする方法です。データベースクエリのような遅い操作がある場合は、バックグラウンドスレッドで実行できます。おそらく、この操作の実行中にメインUIスレッドがフリーズしないようにBackgroundWorkerを使用します。
何を出力しているのか正確にはわかりませんが、これはパフォーマンスの考慮に役立つ可能性があります。
テキストボックスや文字列などにデータ/テキストを繰り返し追加する(たとえば、textBox.Text + = "message"などのエラーメッセージをログに記録する場合)はO(n 2)操作です。つまり、出力が大きくなるほど、より劇的なスローダウンが表示されます。
さらに、出力用のテキストを繰り返し追加する私の実験では、
textBox.Text += "message";
文字列に直接追加してから実行するよりも約3200倍遅くなります(反復の最後に)
textBox.Text = theString;
使用する
textBox.AppendText("message");
さらに遅くなりました(約9600倍)。