「LINQ to DataSet」って速度が早いですか?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-06-12 15:49
お世話になります。
「LINQ to DataSet」を利用している方にお聞きしたいことがあります。 「LINQ to DataSet」を利用したプログラムを組んでいるのですが、 あまりにも動作が遅いなーと感じ、試しに、動作が遅い部分を、 通常のデータセットのSelectに変えたら、速度が向上しました。 LINQ で処理している部分が、 1万件程度のデータを保存したデータセットに対して、LINQで 抽出する処理を十数回繰り返した場合、明らかにデータセットの Selectよりも遅かったです。 (ちなみにデータセットのSelectの場合、ミリ秒で終わるところ、 LINQでは、数秒かかってしまう) これは、LINQの動きが複雑だからでしょうか? みなさんは、「LINQ to DataSet」を利用される場合、データ量に 応じて、LINQ にしたり、データセットのSelect にしたり、 されていますか? ご意見をお聞かせ下さい。 | ||||
|
投稿日時: 2008-11-15 13:24
LINQの動作はFor each してるのと同じですから、
最適化された専用のメソッド使った方が速いのは当然かと… 私は今のとこLINQは様子見です。 | ||||
|
投稿日時: 2008-11-18 22:28
どのような LINQ 式を書きましたか?話はそれからです。 ハニワ祭りさんの「LINQの動作はFor each してるのと同じですから、最適化された専用のメソッド使った方が速いのは当然かと…」というのは、正しいのですが、十分な説明とは言えないでしょう。 DataSet.Select は、検索条件に一致する行を抜き出します。 LINQ は、書き方によっては、何らかの操作(列の構成)をしてから、検索条件に一致する行を抜き出します。 1万件のデータに対して操作をし、検索条件に一致するデータを抜き出す。 1万件のデータから検索条件に一致するデータを抜き出した後、操作をする。 スピードに差が出ることがわかりますよね?LINQ は、問い合わせ(where)だけでなく、変形(select)という処理が入ります。 日経 BP ソフトプレスの、『LINQ テクノロジ入門』第3章あたり参照。 |
1