2013-03-27 2 views
0

Я использую docx4j 2.8.1 для замены текстов и логотипа в файлах слов. Теперь я хочу улучшить производительность, так как обработка около 50 документов выполняется довольно медленно. Какие варианты рекомендуются для повышения производительности docx4j?Оптимизация производительности docx4j

Код для замены строки (не логотип) выглядит следующим образом:

String xml = XmlUtils.marshaltoString(documentPart.getJaxbElement(), true); 
HashMap<String, String> mappings = buildReplaceMap(userData); 

Object obj = XmlUtils.unmarshallFromTemplate(xml, mappings); 
documentPart.setJaxbElement(obj); 
+0

Я предполагаю, что вы обрабатываете 50 документов через один экземпляр JVM (так что вы только однажды задерживаете инициализацию JAXB)? – JasonPlutext

+0

Да. Я заметил, что если документы генерируются одновременно, каждый в своем потоке, процедура занимает больше времени, чем если документы генерируются один за другим. – bertolami

ответ

0

Пожалуйста, попробуйте http://www.docx4java.org/docx4j/docx4j-nightly-20130328.jar

Он содержит экспериментальный метод variableReplace. Предполагая documentPart и отображения в соответствии с вашим вопросом, вы можете позвонить:

documentPart.variableReplace(mappings); 

Вам не нужно documentPart.setJaxbElement.

В моем тестировании с 175-страничным документом обработка занимает 1/3 секунды (примерно в 3 раза быстрее).

Любые дополнительные улучшения производительности получаются наиболее легко благодаря предоставлению большего количества ресурсов (больше ядер, если вы хотите сделать это одновременно) и больше ОЗУ.

Дайте мне знать, что вы думаете.

+0

Решил отредактировать xmls в zip-файле самостоятельно, без разбора xml и т. Д., Просто замену текста. Это работает из-за ограниченной сложности использования. Однако это может быть хрупким. Но это очень быстро. – bertolami

+0

Эта ссылка не работает. – Math

+0

Соответствующий код находится в docx4j 3.0, поэтому, пожалуйста, используйте это вместо текущей текущей (но теперь старой) ночной сборки. – JasonPlutext

Смежные вопросы