По мотивам предыдущего топика (
viewtopic.php?f=6&t=1024) сделал кое-какие измерения. Публикую результаты.
Описание эксперимента:Создан файл Visio, содержащий 20 000 шейпов. Сделаны еще 2 копии этого файла.
Измерение 1. Макрос из Excel последовательно открывает три документа Visio и читает текст всех шейпов. Потом открывает те же три документа, но для обработки запускает макрос в документе Visio, который выполняет ту же операцию чтения текста шейпов. Application Visio создается и закрывается один раз
Измерение 2. Все точно так же, но Application Visio открывается и закрывается для обработки каждого документа.
В протокол выводится время от начала измерения.
Текст макроса в Excel приведен ниже.
РезультатыВ Измерении 1 три документа из Excel обработаны за 126 сек. Три документа из Visio - за 127 сек. Почти одинаково, но следует учесть, что самый первый документ обрабатывается гораздо быстрее остальных - 13 сек вместо 30. То есть вторая половина выполняется на самом деле на 17 сек быстрее.
Обработка одного документа занимает 40 сек из Excel и 30 сек из Visio.
В Измерении 2 половинки составляют, соответственно, 73 и 48 сек. А все измерение занимает 121 сек (против 253 в измерении1). То есть если Application открывать каждый раз заново, получаем выигрыш в два раза.
Время обработки одного документа в среднем 13 сек через Excel и 5 сек через Visio. Ускорение от переноса макроса существенно больше, чем в первом случае.
Выводы1. Приложение желательно открывать и закрывать на каждый документ. Очень неожиданно!
2. Нужно стремиться переносить обработчик в Visio (вместо того, чтобы работать удаленно из Excel).
------------------
Текст программы, цифры и графики - в вордовском файле.
https://yadi.sk/i/BbcUoySSvknPb