ものがたり(旧)

atsushieno.hatenablog.com に続く

do you really want DataView?

今週はどうやらDataViewまわりを直している。しかし…このクラス、使う理由あるのか? ビューに含まれるDataRowの数が少なければ、RowFilterとSortの解析と内部オブジェクトの計算にかかる時間は少なくて済むかもしれないけど、DataRowは全部DataRowViewになる == DataRowが1000行あれば1000個のDataRowViewが余計に生成されるわけだし。UpdateIndex()などというメソッドがあって、少なくともMonoではかなり頻繁に呼ばれているから、DataViewを開いているテーブルで行を追加したらえらいパフォーマンス悪いはずだし、おそらくMS.NETでも同じようなことをしているだろうから(ていうか何でprotected methodなんだ)、DataTable.Select()でDataRow[]返した方がまだ効率的なんじゃないか、という気がしてならない。

monoのDataSetは、まだまだ改良の余地が大いにありそうだ。ていうか多分DataSetって、ろくに最適化されてないっていうか、最適化なんて可能なんかいなと思えるくらい相互に入り乱れていて、まずは整備車両を走らせるところからやんないといけないんじゃないかと思えてくる。

まあ、そもそもクライアントサイドのDBキャッシュだからばんばんメモリ使ってもいいや、っていう発想で作られたライブラリだとは思うけど。ASP.NETのサーバサイドで使っていたらたまらんよなあ。