DataGridViewのセル描画性能の結論

10×500=5000個のセルを扱う訳だが、これは業務アプリケーションを考えたとき、非現実的な規模だろうか。DataGridViewはどうもこの辺の規模で既に限界にあるように見える。

同じことをExcelでもやってみた。当然5000セル程度だとスッカスカに軽く描画されるのだが、ケースによって、例えばセルに多くの文字列がセットされている場合等は5000セル程度でもそこそこに重くなるようだ。それでもDataGridViewのもたつき具合には到底及ばないが。

私がこのコントロールに下した評価結果は

・DataGridViewは、過去のGridコントロールでは実現できなかった、豊富な表現能力がある。
・DataGridViewは、その豊富な表現能力さと引き換えに、セル毎の描画性能が著しく悪い。

というものだ。
ということで、このコントロールは列数と行数が増えることに対して、かなりシビアに管理が必要なコントロールだということが判った。200行、いやできれば100行以内で運用したい。
以前に日記で紹介したがMSDNエントリだが
Windows フォーム DataGridView コントロールを拡張するための推奨される手順
ここの内容からもこのコントロールの並々ならぬ重さが伺えるというものだ。(というか、この資料を見たときに気づくべきだったのかもしれない)
「最大のスケーラビリティ」という言葉を使って、できるだけ軽く使えと説いているが、いちいちセルのスタイルの数や種類に気を使わなくてはならない程に重いということだろう。

もう一つ考えているのは、DataGridViewを継承して、なんとか描画ロジックだけでも軽い描画に挿げ替えることができないだろうか、ということ。文字列のセルを、せいぜい前景/背景色を変える程度のレンダリングに限定することによって、今よりも5割増し位の描画性能に出来ないだろうか、ということだ。時間があれば挑戦してみたい。