Есть несколько файлов: - в одном скисок событий по группе А - в другому скисок событий по группе Б - сводный файл.
Файлы с событиями регулярно обновляются. В сводный файл события переносятся макросами (для каждой группы свой макрос), после этого запускается макрос, который считает (прознозирует) определенную величину события (рейтинг). Количество событий от 500 до 300 000.
Перенос данных происходит с помощью массивов.
Если открыть сводный файл и макросами выгрузить события с файла по группе А, потом группу Б и запустить макрос прогнозирования, то время потраченное на расчет составляет ~120-200 секунд. А если открыть сводный файл выгрузить события с файла по группе А, сохранить, закрыть и потом открыть файл, то третий макрос считает ~10-40 секунд.
Суть вопроса: С чем это связано? Возможно объявленные ранее массивы после выполнения макросов переноса данных продолжают занимать место в оперативной памяти? И есть ли какие-то процедуры (функции), которые позволяют очистить оперативную память либо буфер MS Office (в зависимости, куда записываются массивы).
Есть несколько файлов: - в одном скисок событий по группе А - в другому скисок событий по группе Б - сводный файл.
Файлы с событиями регулярно обновляются. В сводный файл события переносятся макросами (для каждой группы свой макрос), после этого запускается макрос, который считает (прознозирует) определенную величину события (рейтинг). Количество событий от 500 до 300 000.
Перенос данных происходит с помощью массивов.
Если открыть сводный файл и макросами выгрузить события с файла по группе А, потом группу Б и запустить макрос прогнозирования, то время потраченное на расчет составляет ~120-200 секунд. А если открыть сводный файл выгрузить события с файла по группе А, сохранить, закрыть и потом открыть файл, то третий макрос считает ~10-40 секунд.
Суть вопроса: С чем это связано? Возможно объявленные ранее массивы после выполнения макросов переноса данных продолжают занимать место в оперативной памяти? И есть ли какие-то процедуры (функции), которые позволяют очистить оперативную память либо буфер MS Office (в зависимости, куда записываются массивы).dadmarat
Массив из памяти очищается так: Erase массив Вполне может быть, что он остаётся в памяти, а 300000 строк и если много столбцов - то это значительно может занять память.
P.S. что такое "скисок"?
Массив из памяти очищается так: Erase массив Вполне может быть, что он остаётся в памяти, а 300000 строк и если много столбцов - то это значительно может занять память.
Где-то 30 столбцов, но данные в сводном файле не записываются в массив. В массивы попадаются только данные с файлов ихсодников.
Спасибо, опробую отпишусь.
-------------------------------------------------------------- добавлено 6 марта -------------------------------------------------------------- В конце всех макросов выгрузки начал стирать массивы, немного ускорило работу макроса прогнозирования, но все равно после сохранить-закрыть-открыть работает значительно быстрее. Возможно ещё что-то "висит" в памяти, что очищается после закрытия программы.
Где-то 30 столбцов, но данные в сводном файле не записываются в массив. В массивы попадаются только данные с файлов ихсодников.
Спасибо, опробую отпишусь.
-------------------------------------------------------------- добавлено 6 марта -------------------------------------------------------------- В конце всех макросов выгрузки начал стирать массивы, немного ускорило работу макроса прогнозирования, но все равно после сохранить-закрыть-открыть работает значительно быстрее. Возможно ещё что-то "висит" в памяти, что очищается после закрытия программы.dadmarat
---------------- I can do it! ----------------
Сообщение отредактировал dadmarat - Четверг, 06.03.2014, 12:05