orizuru

つながる.見える.わかる IoTソリュ-ション

【C#】DataGridViewデータ表示速度比較

約 3 分
【C#】DataGridViewデータ表示速度比較

お久しぶりです、エンジニアのMasashiです。

今回は、DataGridViewのデータ表示速度を比較したいと思います。
DataGridView(Windows Forms)を使用した新規開発はあまり多くはないかもしれませんが、
既存システムの改修等で触れる機会があるのではないでしょうか?
速度面の問題が合わせて改修要件に入ってくることもあるため
今回はDataGridViewにデータを表示させる際の速度を3つの方法から検証してみたいと思います。

測定までの流れ

今回測定を行うのは、10行・10,000列のDataGridViewに単純な文字データを表示するまでに要した時間になります。
比較対象としてRows.Addで1行・1セルずつデータを追加するパターン(非バインド)、DataTableのデータをバインドするパターン、自作クラス(Model)をバインドするパターンの3つの場合について検証しています。

測定環境

  • CPU:Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz (4 CPUs), ~2.9GHz
  • メモリ:16GB
  • Visual Studio 2015

対象データ

  • DataGridViewの行数:10
  • DataGridViewの列数:10,000
  • 各セルに書き込む文字:Rows_(列数):Cols_(行数)

測定対象

  • Rows.Addで1行・1セルずつデータを追加(非バインド)
  • DataTableのデータをバインド
  • 自作クラス(Model)をバインド

テストコード

DataGridViewデータ表示の測定結果

10回試行した結果の平均値が下記になっています。小数点第1位で四捨五入しています。

ここをタップして表示Close
計測項目 計測時間(ms)
Rows.Addで1行・1セルずつデータを追加(非バインド) 3316
DataTableのデータをバインド 129
自作クラス(Model)をバインド 59

上記の結果を比較してみると自作クラスをバインドしたパターンの速度が圧倒的に速い結果になりました。
1行・1セルずつデータを追加するパターンは単純にデータ量も多いため非常に時間がかかる結果になっています。
DataTableをバインドしたパターンは、DataTableに関する処理が重いために
同様のバインドでも自作クラスとの差が生まれたと考えられます。

DataGridViewデータ表示速度のまとめ

既存システムの改修や新規開発を行う上でDataGridViewを触る機会がある場合は、
可能ならば自作クラスをバインドすることで、非常に高速な処理が行えます。
しかし、DataGridViewに表示するデータはDBから取得したデータが多いため
便利なDataTableを使っている、または使いたいパターンも多くあると思います。
速度差は倍以上違いますが、ミリ秒の世界での話なので普段はあまり気にせずDataTableをバインドして
問題ないかと考えられます。
表示までに求められる時間が非常にシビアな場合は、自作クラスをバインドしてみてはいかがでしょうか。
この記事が少しでも皆さんのお役に立てば幸いです。

About The Author

エンジニアMasashi
C#を用いた業務系アプリの製造に従事。

Leave A Reply

*
*
* (公開されません)