- PR -

「LINQ to DataSet」って速度が早いですか?

1
投稿者投稿内容
まえちょ
会議室デビュー日: 2007/06/27
投稿数: 9
投稿日時: 2008-06-12 15:49
お世話になります。

「LINQ to DataSet」を利用している方にお聞きしたいことがあります。

「LINQ to DataSet」を利用したプログラムを組んでいるのですが、
あまりにも動作が遅いなーと感じ、試しに、動作が遅い部分を、
通常のデータセットのSelectに変えたら、速度が向上しました。

LINQ で処理している部分が、
1万件程度のデータを保存したデータセットに対して、LINQで
抽出する処理を十数回繰り返した場合、明らかにデータセットの
Selectよりも遅かったです。
(ちなみにデータセットのSelectの場合、ミリ秒で終わるところ、
LINQでは、数秒かかってしまう)

これは、LINQの動きが複雑だからでしょうか?

みなさんは、「LINQ to DataSet」を利用される場合、データ量に
応じて、LINQ にしたり、データセットのSelect にしたり、
されていますか?

ご意見をお聞かせ下さい。
ハニワ祭り
大ベテラン
会議室デビュー日: 2005/11/15
投稿数: 115
投稿日時: 2008-11-15 13:24
LINQの動作はFor each してるのと同じですから、
最適化された専用のメソッド使った方が速いのは当然かと…
私は今のとこLINQは様子見です。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-11-18 22:28
引用:

まえちょさんの書き込み (2008-06-12 15:49) より:
「LINQ to DataSet」を利用したプログラムを組んでいるのですが、
あまりにも動作が遅いなーと感じ、試しに、動作が遅い部分を、
通常のデータセットのSelectに変えたら、速度が向上しました。


どのような LINQ 式を書きましたか?話はそれからです。
ハニワ祭りさんの「LINQの動作はFor each してるのと同じですから、最適化された専用のメソッド使った方が速いのは当然かと…」というのは、正しいのですが、十分な説明とは言えないでしょう。

DataSet.Select は、検索条件に一致する行を抜き出します。
LINQ は、書き方によっては、何らかの操作(列の構成)をしてから、検索条件に一致する行を抜き出します。

1万件のデータに対して操作をし、検索条件に一致するデータを抜き出す。
1万件のデータから検索条件に一致するデータを抜き出した後、操作をする。

スピードに差が出ることがわかりますよね?LINQ は、問い合わせ(where)だけでなく、変形(select)という処理が入ります。

日経 BP ソフトプレスの、『LINQ テクノロジ入門』第3章あたり参照。
1

スキルアップ/キャリアアップ(JOB@IT)