1

TPL や PLINQ を使用して以下をさらに最適化する方法に関するヒント。

以下のコードはバックグラウンドワーカーで実行されます

Read a large table using sql reader 
Open stream writer to write a large csv file
while (reader.read())
{
   massage the data, parse data from columns etc. 
   create csv string to write to file
   write csv line to file
}
close reader
close file

ありがとうございました。

4

2 に答える 2

0

csv 行データを StringBuilder (メモリ内の IE) に書き込んでから、その内容を csv ファイルに書き出すと、パフォーマンスが向上する場合があります。ANTS や JetBrains 製品のようなメモリ プロファイラーと一緒に両方の方法を使用することをお勧めします。

于 2011-06-08T12:59:24.370 に答える
0

「さらに最適化」を定義します...速度を上げるか、メモリ使用量を減らしますか?

上記の疑似コードが正しく実装されていると仮定すると、メモリ使用量はすでに最小限に抑えられているはずです。

スピード?大規模なデータ セットを操作しているというステートメントに基づくと、データ リーダーが速度低下の最大の原因になります。したがって、本当に並列処理を使用したい場合は、データ セットを断片化する必要があります (おそらく複数のリーダーを開きますか?)。

しかし、繰り返しになりますが、既にバックグラウンド ワーカーで実行しているので、それは本当に問題なのでしょうか?

于 2011-06-08T13:22:31.990 に答える