DataGridViewを全行削除するやり方について

昔知り合いがDataGridViewを使って作ったプログラムに、不可思議なコードを見つけた。

var max = this.dataGridView1.RowCount;
if(this.dataGridView1.AllowUserToAddRows) max--;
for(var i = 0;i < max;i++) this.dataGridView1.Rows.RemoveAt(0);

全行削除するのに、一行ずつ削除している。見た感じ、行数の2乗オーダーで時間がかかりそうな、いかにも非効率そうなコードだ。

全行削除するなら、以下のように、Clearメソッドで一発である。

dataGridView1.Rows.Clear();

一応実行時間の実測もしたが、一覧表にするのばかばかしいので、64bitのReleaseビルドで1000行削除した結果だけ載せておくと、RemoveAtが367ミリ秒、Clearが20ミリ秒であった。

AllowUserToAddRowsなどのプロパティを変更して確かめたりもしたが、Clearで予期しない動きがあるわけでもなく、わざわざRemoveAtを使って全行削除する意味はなさそうだ。

まあ、以下の実測コードで適当にプロパティとか行数をいじって確かめてみてほしい。

一応検証コード的なもの(GitHub)

(そもそもDataSourceにコレクションを突っ込んで使うのが本来の使い方だとは思うが)