XSLT Преобразование производительности - PullRequest
1 голос
/ 15 сентября 2010

Вот ссылки на мои файлы XML , XSLT , Включить XSLT

Привет

Я превращаю xml в html. Мой xml-файл имеет размер около 10 КБ, а мой xslt - 70 КБ, а вывод html - около 10 КБ.

Transformer xformer = StylesheetCache.newTransformer(templateFile);
xformer.transform(new DOMSource(outlineDoc),new StreamResult(out));

Создание преобразователя занимает около 10 секунд, поэтому я создал кеш, который снизил его до 300 мс, если он кешируется. Строка преобразования занимает 3 секунды для выполнения. Сейчас это долго. Я написал аналогичные преобразования на Windows Mobile, и время выполнения составляет около <= 1 с </p>

Я изменил TransformerFactory на Saxon, но результат был примерно таким же.

спасибо

Ответы [ 3 ]

4 голосов
/ 15 сентября 2010

Вы проблема с использованием DOMSource, не используйте его, если это вообще возможно.В частности, Saxon имеет гораздо худшую производительность по сравнению с использованием потокового источника или источника SAX - это потому, что он создает свое собственное высокооптимизированное (для использования xslt) дерево («крошечное дерево»).Существует обходной путь к этой проблеме, а также полное объяснение по адресу: http://dev.saxonica.com/blog/mike/2007/03/#000138.

Но даже если вы использовали Xalan (JDK по умолчанию), имеет смысл использовать необработанный ввод и не создавать промежуточную структуру DOM;Процессоры XSLT могут сами создавать оптимальное представление в памяти и зачастую более эффективно.

1 голос
/ 20 сентября 2010

Я нашел проблему ... Я думаю, что мне нужно пнуть себя. Я был дома, играя со своим телефоном, поэтому решил немного поиграть с приложением. и внезапно загрузка инициализации была как 1 с, а последующие вызовы - как 500 мс. Так что в этот момент я был в тупике. я так вытащил свой ноутбук, подключил телефон и отладил, и все это было снова 12 секунд. Я был чертовски IDE. как только я запускаю его через эклипс, он замедляется до 12 секунд.

: - \

0 голосов
/ 15 сентября 2010

Вы испытываете такие задержки при каждой трансформации?Я заметил, что когда Android загружает сторонние библиотеки в процесс, требуется некоторое время.Точное время зависит от размера библиотеки.Например, загрузка joda-time занимает приблизительно 3 секунды.

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