15.09.2005, 16:20 | #1 |
Участник
|
Word документ в 3-х звенке
Формирование Word документа на удаленном клиенте происходит долго, около 5 минут. Шаблон документа сначала находился на сервере, теперь на машине клиента, по-моему на скорость это никак не влияет.
Для сравнения, клиент в локальной сети формирует этот же документ за минуту. Можно ли как-нибудь ускорить процесс? или это фантастика? Заранее всем спасибо |
|
04.10.2005, 16:22 | #2 |
Участник
|
Разумеется следовало оптимизировать некоторые select-ы
Но (!) самое интересное было в определении версии Word <экземпляр Com класса>.version() Метод FindField класса ComWordDocument_RU содержит следующий кусок кода: ................... if (substr(m_comApplication.version(), 1, 1) >= '9') // Word 2000 and later { field = fields.item(_bookMark); } else { for (i=1 ; i<= fields.count() ; i+=1) { fieldTmp = fields.item(i); ...................... substr(m_comApplication.version(), 1, 1) возвращает 1, если Word 2003. Код исправлен следующим образом: ........... sbuf =substr(m_comApplication.version(), 1, 1); if (sbuf >= '9' || sbuf == '1') // Word 2000 and later { field = fields.item(_bookMark); } else { for (i=1 ; i<= fields.count() ; i+=1) { fieldTmp = fields.item(i); .................. Работает кратно быстрее Известна ли версия Word, которая начинается на 1 и раньше 2003? |
|
04.10.2005, 16:39 | #3 |
Участник
|
Думаю так будет лучше
........... sbuf = str2num(m_comApplication.version()); if (sbuf >= 9) // Word 2000 and later { field = fields.item(_bookMark); } else { for (i=1 ; i<= fields.count() ; i+=1) { ........... |
|
05.10.2005, 13:46 | #4 |
Участник
|
Следует помнить, что в X++ вычисление граничных условий цикла происходит при каждой итерации цикла. Это значит, что вычисление значения fields.count() происходит при каждом шаге цикла. Для ускорения этого процесса следует вычислить это значение один раз ДО выполнения цикла.
PHP код:
|
|
06.10.2005, 08:07 | #5 |
Участник
|
Выигрыш действительно несущественный.
Помнится мудрость "с миру по нитке - бедному рубаха". :-) |
|