Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Оптимизация работы макроса - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Оптимизация работы макроса
dadmarat Дата: Среда, 05.03.2014, 17:19 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 3 ±
Замечаний: 0% ±

Excel 2010
Есть несколько файлов:
- в одном скисок событий по группе А
- в другому скисок событий по группе Б
- сводный файл.

Файлы с событиями регулярно обновляются. В сводный файл события переносятся макросами (для каждой группы свой макрос), после этого запускается макрос, который считает (прознозирует) определенную величину события (рейтинг).
Количество событий от 500 до 300 000.

Перенос данных происходит с помощью массивов.

Если открыть сводный файл и макросами выгрузить события с файла по группе А, потом группу Б и запустить макрос прогнозирования, то время потраченное на расчет составляет ~120-200 секунд.
А если открыть сводный файл выгрузить события с файла по группе А, сохранить, закрыть и потом открыть файл, то третий макрос считает ~10-40 секунд.


Суть вопроса:
С чем это связано? Возможно объявленные ранее массивы после выполнения макросов переноса данных продолжают занимать место в оперативной памяти?
И есть ли какие-то процедуры (функции), которые позволяют очистить оперативную память либо буфер MS Office (в зависимости, куда записываются массивы).


----------------
I can do it!
----------------
 
Ответить
СообщениеЕсть несколько файлов:
- в одном скисок событий по группе А
- в другому скисок событий по группе Б
- сводный файл.

Файлы с событиями регулярно обновляются. В сводный файл события переносятся макросами (для каждой группы свой макрос), после этого запускается макрос, который считает (прознозирует) определенную величину события (рейтинг).
Количество событий от 500 до 300 000.

Перенос данных происходит с помощью массивов.

Если открыть сводный файл и макросами выгрузить события с файла по группе А, потом группу Б и запустить макрос прогнозирования, то время потраченное на расчет составляет ~120-200 секунд.
А если открыть сводный файл выгрузить события с файла по группе А, сохранить, закрыть и потом открыть файл, то третий макрос считает ~10-40 секунд.


Суть вопроса:
С чем это связано? Возможно объявленные ранее массивы после выполнения макросов переноса данных продолжают занимать место в оперативной памяти?
И есть ли какие-то процедуры (функции), которые позволяют очистить оперативную память либо буфер MS Office (в зависимости, куда записываются массивы).

Автор - dadmarat
Дата добавления - 05.03.2014 в 17:19
Hugo Дата: Среда, 05.03.2014, 17:39 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Массив из памяти очищается так:
Erase массив
Вполне может быть, что он остаётся в памяти, а 300000 строк и если много столбцов - то это значительно может занять память.

P.S. что такое "скисок"? :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеМассив из памяти очищается так:
Erase массив
Вполне может быть, что он остаётся в памяти, а 300000 строк и если много столбцов - то это значительно может занять память.

P.S. что такое "скисок"? :)

Автор - Hugo
Дата добавления - 05.03.2014 в 17:39
dadmarat Дата: Среда, 05.03.2014, 17:59 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 3 ±
Замечаний: 0% ±

Excel 2010

P.S. что такое "скисок"?

Опечатка, должен быть список :)

Где-то 30 столбцов, но данные в сводном файле не записываются в массив. В массивы попадаются только данные с файлов ихсодников.

Спасибо, опробую отпишусь.

--------------------------------------------------------------
добавлено 6 марта
--------------------------------------------------------------
В конце всех макросов выгрузки начал стирать массивы, немного ускорило работу макроса прогнозирования, но все равно после сохранить-закрыть-открыть работает значительно быстрее.
Возможно ещё что-то "висит" в памяти, что очищается после закрытия программы.


----------------
I can do it!
----------------


Сообщение отредактировал dadmarat - Четверг, 06.03.2014, 12:05
 
Ответить
Сообщение

P.S. что такое "скисок"?

Опечатка, должен быть список :)

Где-то 30 столбцов, но данные в сводном файле не записываются в массив. В массивы попадаются только данные с файлов ихсодников.

Спасибо, опробую отпишусь.

--------------------------------------------------------------
добавлено 6 марта
--------------------------------------------------------------
В конце всех макросов выгрузки начал стирать массивы, немного ускорило работу макроса прогнозирования, но все равно после сохранить-закрыть-открыть работает значительно быстрее.
Возможно ещё что-то "висит" в памяти, что очищается после закрытия программы.

Автор - dadmarat
Дата добавления - 05.03.2014 в 17:59
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!