У меня есть папка с 3000 csv файлами размером от 1Kb до 100kb. Каждая строка в этих файлах имеет длину 43 символа. Они имеют общий размер 171Mb.C# Быстрое чтение CSV из многих файлов
Я пытаюсь написать программу для синтаксического анализа этих файлов как можно быстрее.
Первоначально я попытался выполнить свою собственную реализацию, но не был доволен этими результатами. Затем я нашел LumenWorks.Framework.IO.Csv в StackOverflow. Он имеет смелые претензии:
Чтобы предоставить более простые цифры, с CSV-файлом 45 МБ, содержащим 145 полей и 50 000 записей, читатель обрабатывал около 30 МБ/с. Так что в целом, потребовалось 1,5 секунды! Характеристики машины были P4 3,0 ГГц, 1024 МБ.
Я просто ничего не получаю вблизи этих результатов. Мой процесс занимает 10 минут. Это потому, что это не один большой поток, а множество небольших файлов, и там есть накладные расходы? Есть ли что-нибудь еще, что я мог бы сделать?
Я чувствую, что реализация LumenWorks не была быстрее моей (я не тестировал ее), не говоря уже о том, что она обрабатывает кавычки, экранирование, комментарии и многострочные поля, ни один из которых мне не нужен. У меня очень обычный формат целых чисел, разделенных запятыми.
Приветствия
Когда вы говорите синтаксический анализ ... Можете ли вы рассказать о том, что вы делаете с каждым файлом? – Jay
Прямо сейчас, ничего. Просто прочитав поля в строку [], а затем перейдем к следующей строке. – Mitch
Как уже упоминалось ниже, кажется, что ваша проблема связана с IO, пытающейся разобрать файлы в RAMdisk и разыгрывать оттуда? http://superuser.com/questions/34388/whats-the-best-ramdisk-for-windows –