оптимизировать средство записи больших csv-файлов - средство чтения больших таблиц с использованием TPL PLINQ - PullRequest
1 голос
/ 01 июня 2011

Любые советы по дальнейшей оптимизации с использованием 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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 июня 2011

определить «оптимизировать дальше» ... Хотите увеличить скорость или уменьшить объем используемой памяти?

Если предположить, что приведенный выше псевдокод реализован правильно, то использование памяти должно быть уже довольно минимальным.

Скорость? Исходя из заявления о том, что вы работаете с большим набором данных, считыватель данных будет вашим самым большим источником медлительности. Так что если вы действительно хотите использовать параллельную обработку, то вам придется фрагментировать ваш набор данных (предположительно, открыть несколько считывателей?)

Но опять же, вы уже запускаете его в фоновом режиме, так что это действительно имеет значение?

0 голосов
/ 08 июня 2011

Вы можете улучшить производительность, записав данные строки csv в StringBuilder (IE, в памяти), а затем записав содержимое в свой файл csv.Я бы предложил использовать оба метода вместе с профилировщиком памяти, таким как ANTS или продукт JetBrains.

...