Я работаю над проектом, который включает в себя синтаксический анализ большого файла csv в Perl и я хочу сделать что-то более эффективным.
Мой подход состоял в split()
файле по строкам первым, а затем split()
каждую строку снова запятыми, чтобы получить поля. Но это субоптимально, так как требуется не менее двух проходов по данным. (один раз разделить по линиям, затем еще раз для каждой строки). Это очень большой файл, поэтому обработка обработки пополам станет значительным улучшением для всего приложения.
Мой вопрос в том, что самое эффективное время для синтаксического анализа большого CSV файла с использованием только встроенных инструментов?
Примечание. Каждая строка имеет различное количество токенов, поэтому мы не можем просто игнорировать строки и делиться только запятыми. Также мы можем предположить, что поля будут содержать только буквенно-цифровые данные ascii (никаких специальных символов или других трюков). Кроме того, я не хочу проходить параллельную обработку, хотя она может работать эффективно.
изменить
Он может включать только встроенные инструменты, поставляемые с Perl 5.8. По бюрократическим причинам я не могу использовать сторонние модули (даже если они размещены на cpan)
другое редактирование
Предположим, что нашему решению разрешено иметь дело только с файловыми данными, когда оно полностью загружено в память.
еще одно редактирование
Я просто понял, насколько глупый этот вопрос. Извините за то, что потратил ваше время. Голосование закрывается.