Быстрый CSV-парсер с низкой загрузкой GC - PullRequest
2 голосов
/ 27 мая 2011

Кто-нибудь знает быстрый парсер CSV, который мало влияет на GC? Например, SuperCsv создает слишком много объектов (строк), и GC не очень рад этому ...

Спасибо.

Ответы [ 2 ]

5 голосов
/ 28 мая 2011

Вместо того, чтобы создавать строки, я предлагаю вам использовать символ фиксированной длины [] для чтения содержимого файла, скажем, 10K символов за раз.Определите размер символа [] в зависимости от того, какой максимальный размер символов в строке.Затем переберите символ char [] и найдите запятую.Как только вы нашли запятую, сохраните позицию в int [].Итак, int [0] говорит о первой позиции запятой, int [1] - второй запятой и так далее.Повторно используйте int [] для каждой строки.

Таким образом, вы никогда не будете объявлять переменные для каждой строки.Таким образом, нет GC накладных расходов.Все, что вам нужно сделать, это прочитать значение каждого поля из большого символа [], используя позиции, хранящиеся в int [], и извлечь из этого смысл.

1 голос
/ 26 августа 2016

Взгляните на https://github.com/titorenko/quick-csv-streamer,, это создает минимальное количество мусора.

Отказ от ответственности: я являюсь автором этой библиотеки.

...