Используйте GZIP для ускорения разбора XML - PullRequest
0 голосов
/ 26 марта 2009

Я сталкиваюсь с проблемой обработки многих xml-файлов, размер которых превышает 70 МБ. Проверка и доступ к ним стоит много времени. Теперь мне интересно, могут ли следующие шаги повысить производительность моих приложений.

Я могу сжать xml-файл 70 МБ в gzip-файл <1 МБ. Таким образом, я мог держать только файлы gzip. Работать с данными можно было бы так: </p>

  • Сделать gzip доступным с java.io.File (только маленький файл)
  • Использование, например, StringBufferInputStream и GZIPInputStream для извлечения содержимого в оперативной памяти
  • работа с контентом (ОЗУ): Parse, Validate, ...
  • создать строку в ОЗУ, которая представляет новый XML-контент (ОЗУ)
  • Используйте GZIPOutputStream для доступа к файловой системе (снова небольшой контент)

Могу ли я сделать это или я могу ошибиться в своих мыслях?

THX заранее! Hans

1 Ответ

1 голос
/ 26 марта 2009

Чтение 70 МБ с HD должно занять не более 1-2 секунд (конечно, в зависимости от вашего оборудования), поэтому, если у вас задержка больше, чем, скажем, 4 секунды, узкое место не ваше HD но обработка XML и все, что вы делаете с этим.

Прежде чем приступить к программированию идеи gzip (что звучит неплохо), вы можете жестко закодировать образец XML в своем коде (да, вставьте 70 МБ в виде одной строки), запустите приложение с приятной кнопкой с надписью («Сделай это! ") - или дождитесь пользовательского ввода, если вы находитесь в терминале - и посмотрите, сколько времени займет обработка XML.

Этот подход загрузит ваши 70 мегабайт в память (в виде кода) перед обработкой, поэтому вы сможете увидеть, сколько на самом деле требуется, чтобы их потреблять.

После этого, если вы видите, что он обрабатывается достаточно быстро, проблема явно в HD. Если нет, то вам следует попытаться оптимизировать обработку XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...