У меня есть XML-файл размером 31 ГБ. Мне нужно найти общее количество строк в этом файле. Я знаю, что команда wc -l
даст мне то же самое. Однако для выполнения этой операции слишком много времени. Есть ли более быстрый механизм для поиска количества строк в большом файле?Длина файла XML
ответ
31 концерта - действительно большой текстовый файл. Бьюсь об заклад, он сжимал бы около 1,5 концертов. Я бы начал создавать эти файлы в сжатом формате, чтобы начать с того, что вы можете передать распакованную версию файла через wc. Это значительно сократит объем ввода-вывода и памяти, используемых для обработки этого файла. gzip может читать и записывать сжатые потоки.
Но я хотел бы также сделать следующие замечания:
- номер строк на самом деле не что информативный для XML как пробела между элементами игнорируются (для смешанного содержания, за исключением). Что вы действительно хотите узнать о наборе данных? Я считаю, что подсчет элементов будет более полезен.
- Убедитесь, что ваш XML-файл не является излишне лишним, например, вы повторяете те же объявления пространства имен по всему документу?
- Возможно, XML не является лучшим способом представить этот документ, если он поищите в нечто вроде Fast Infoset
Хорошая идея о потоках gzipped. Мне было бы интересно увидеть влияние производительности (у меня нет файла с размером файла 31 Гб) –
Если вам нужно только количество строк, wc -l
будет так же быстро, как и все остальное.
Проблема заключается в текстовом файле 31GB.
Нет, не совсем. wc
будет очень хорошо оптимизирован. 31GB - это много данных, и чтение его для подсчета строк займет некоторое время независимо от того, какую программу вы используете.
Кроме того, этот вопрос не подходит для переполнения стека, поскольку речь идет не о программировании вообще.
У вас всегда может быть решение для программирования –
Если точность не является проблемой, найдите среднюю длину линии и разделите ее на размер. Таким образом, вы можете получить очень быстрое приближение. (не забудьте рассмотреть используемую кодировку символов)
Это выходит за рамки того, где код должен быть реорганизован, чтобы полностью исключить вашу проблему. Один из способов сделать это - поместить все данные в файл в базу данных хранилища. Apache couchDB и Intersystems Cache - это две системы, которые вы могли бы использовать для этого, и будут намного лучше оптимизированы для типа данных, с которыми вы имеете дело.
Если вы действительно застряли в файле xml, то другой вариант - подсчитать все строки раньше времени и кешировать это значение. Каждый раз, когда строка добавляется или удаляется из файла, вы можете добавить или вычесть ее из файла. Кроме того, обязательно используйте 64-битное целое число, так как может быть более 2^32 строк.
Не считая строк довольно неопределенным, поскольку в XML-символе новой строки в основном просто косметическая вещь? Вероятно, лучше было бы подсчитать количество вхождений определенного тега.
- 1. строка длина структуры xml
- 2. Длина ChildNodes XML
- 3. Максимальная длина для имени файла
- 4. Загрузка файла - отрицательная длина файла
- 5. Red5 длина файла записи
- 6. Длина временного файла?
- 7. IIS7 длина загрузки файла
- 8. Память Mapped Длина файла
- 9. длина времени mp3-файла
- 10. Длина WAV файла в мс
- 11. Длина файла (LOF) возвращает 0
- 12. C++ длина файла и векторов
- 13. Какова максимальная длина mp3-файла?
- 14. Средняя длина слова входного файла
- 15. ява - длина файла после переименования
- 16. Массивная длина файла ресурса C#
- 17. python win32 длина имени файла
- 18. Охватить максимальная длина файла закачано
- 19. Максимальная длина выходного файла не соответствует входным векторам длина
- 20. Какова максимальная длина текста внутри узла xml?
- 21. Минимальная длина имени пространства имен XML?
- 22. regex длина списка чисел из файла
- 23. Qt get Content Длина файла Amazon S3
- 24. Ruby: Длина строки файла в байтах?
- 25. длина mp3-файла не указана правильно
- 26. Java/Spring - нулевая длина файла от InputStream
- 27. Максимальная длина файла изображения для приложения j2me?
- 28. Получить Sound Длина файла в C#
- 29. Максимальная длина запроса превышена Загрузка файла asp.net
- 30. Длина входного файла в Internet Explorer
@Turing Complete: Это не обязательно вина OP в, может быть, он работает на прежней системе или что-то подобное. Вопрос верен и не заслуживает -1 – marcgg