Ruby : используйте libxml

Если вам надо обрабатывать довольно большие xml файлы. И делать надо это часто. То тогда не используйте REXML. Используйте ruby-libxml.

Он намного быстрее и, как мне кажется более лаконичен. У меня была задача на основе одного большого XML файла нагенерить кучу html файлов с кросслинками. Так вот REXML работал так медленно, что генерил 166 файлов около 25 минут, а ruby-libxml справляется с этой задачей теперь за секунд так 5.

Вот пару статей, которые позволят быстро перейти на libxml с REXML

  • Converting from Rexml to libxml. Даже не знаю, что можно добавить. Из заголовка всё и так ясно.
  • Parsing XML with Ruby. Приведены примеры использования трёх либ для парсинга xml на Ruby. Можно визульально сравнить, какая из либ проще.

Кстати, весь переход я осуществил где то за минут так 30. А это где то 1.5 полная генерация из моего большого xml. Зато теперь я могу моментально все перегенеривать.

Реклама

комментария 2 to “Ruby : используйте libxml”

  1. Ivan Sidarau Says:

    наверняка для больших файлов можно было предусмотреть проблему прямо в документации REXML:

    REXML avoids The DOM API, which violates the maxim of simplicity. It does provide a DOM model, but one that is Ruby-ized. It is an XML API oriented for Ruby programmers, not for XML programmers coming from Java.

  2. krolser Says:

    А ты почитай что дальше написано. Эта фраза говорит о том, что надо его использовать в руби стиле.

    Так вот я как раз и использовал в руби стиле….. рубичнее или рубистее не придумаешь.

    На самом деле REXML ну очень тормознутый. Перед тем, как его использовать я читал конечно же сравнения, но никогда не думал, что он окажется настолько медленный.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s


%d такие блоггеры, как: