Достаточно много видел сообщений по поводу оптимизации различных формул, различных расчётов и стратегий. Но мало кто решался подробно изучить основной элемент таблиц, без которого они не смогли бы полноценно работать.
В качестве примера была взята таблица InfinityBook, которая находится здесь: https://brcbet.com/files/file/37-rabochaya-infinitybook-12v1/
Код был оптимизирован, в процессе работы использовалась информация с этих сайтов:
https://docs.microsoft.com/ru-ru/office/vba/excel/concepts/excel-performance/excel-tips-for-optimizing-performance-obstructions
https://vremya-ne-zhdet.ru/vba-excel/vremya-raboty-makrosa/
Дополнительно был создан "частично-оптимизированный" файл загрузчика. В нём было всего два изменения относительно исходного файла: отключенный пересчёт (Application.Calculation = xlCalculationManual) и изменён тип файла на бинарный .xlsb
Получается что сравнивались три таблицы - исходная, частично-оптимизированная и полностью оптимизированная - "быстрая". Все они находятся в архивах внизу сообщения.
Затем провёл измерения - по 5 штук. При нахождении среднего не учитывал лучшее и худшее среди этих пяти значений. При этом использовал встроенную функцию Timer.
Сначала измерялось время загрузки списка матчей ( лист "Список") в обычном режиме. Затем загружались те же данные, но с использование одного ядра процессора. (настраивал через Файл->Параметры->Дополнительно->Формулы)
Далее загружался матч: с макросом "refreshAll", и без него.
Результаты выложил в файле "Сравнение версий". Поскольку в данном парсере практически отсутствуют тяжёлые формулы, то данные с "частично-оптимизированной" таблицей и данные с одноядерного теста не являются корректными. Данные будут корректными если загрузчик будет использовать больше сложных формул/расчётов.
В ходе эксперимента удалось ускорить загрузчик примерно на 15% по сравнению с исходным вариантом. Вот окончательный вариант:Быстрая IB.7z
Как вы считаете, возможно ли ещё сильнее ускорить подобный загручик? И вообще - целесообразно ли оптимизировать таблицы?
Исходная IB.7z
Оптимизированная IB.7z
Сравнение версий.xlsx