2012-04-12 4 views
2

私は一般的なリストの大ファンで、私が取り組んでいるプロジェクトでそれらを使用します。しかし、私は現在、外部の人が書いた別のプロジェクトに取り組んでおり、ページの読み込みが非常に遅いことを発見しています。場合によっては、ページの読み込みにわずか2秒を要します。DataTable上の汎用リストを使用すると、パフォーマンスのオーバーヘッドが少なくなりますか?

最初の調査では、大部分のページが1000行以上のデータを格納する多数のDataTableで散在しています。私は宣言し、DataTableの列を設定するとオーバーヘッドに寄与すると思っていたでしょう。

一般リスト(リスト)を使用し、LINQを使用して必要なデータをフィルタリングすると、パフォーマンスの遅れが少なくなる可能性があることに疑問を呈しています。

ページの読み込みが遅くなることがありますが、大量のデータがDataTableで操作されているのがわかりました。

+1

パフォーマンスの問題については、推測できません。あなたは測定する。あなたのホットスポットがどこにあるかを見つけるためにまともなプロファイラを拾い、それらを修正してください。 –

+0

変更を行う前に、さらに調査する必要があります。おそらく、DataTablesのデータを取得するためのデータを取得することは問題です。 – Magnus

答えて

2

の場合、それぞれ数千の行を持つ複数のオブジェクトがある場合は、各ページに読み込みが行われますか?DataTableもしそうなら、それはしばらく時間がかかることに驚くことではなく、単純にリストを使用するだけでは助けにならないでしょう。ボトルネックがいくつかのクエリで多くのデータを取得することが予想されるからです。 DataTableを作成するオーバーヘッドは、IMOにとって重要ではないようです。 (私は一般的にリストなども使用しますが、パフォーマンスよりも清潔な理由から好きです。)を推測するのではなく、ボトルネックがどこにあるのかを調べるプロファイリングが必要です。これがMVCプロジェクトの場合は、MiniProfilerをご覧ください。

+0

一般的には、汎用リストはDataTableを使用するよりも効率的だと思いました。私は間違っていたと思う。 :-)残念ながら、私はMVCを使用していませんが、推奨事項がない限り、他の.NETプロファイラを見ていきます。 – sbhomra

+0

@sbhomra:いいえ、リストを使用すると、DataTableを使用するよりも効率的ですが、大部分の時間が費やされている場合は、データを取得する*場合は、 *フェッチ後。私はWebプロファイリングに関して特別な推奨事項はありません。恐れがあります。 –

+0

情報ありがとうございます。自分の質問に答えてSO伝説を持っていることは光栄です。 ;-) – sbhomra