Опубликовано 3 августа, 20215 г. Достаточно много видел сообщений по поводу оптимизации различных формул, различных расчётов и стратегий. Но мало кто решался подробно изучить основной элемент таблиц, без которого они не смогли бы полноценно работать. В качестве примера была взята таблица 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
Опубликовано 3 августа, 20215 г. Постоянный 3 часа назад, Mex_Kozo4ki сказал: Достаточно много видел сообщений по поводу оптимизации различных формул, различных расчётов и стратегий. Но мало кто решался подробно изучить основной элемент таблиц, без которого они не смогли бы полноценно работать. В качестве примера была взята таблица 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 2 \u041c\u0411 · 0 загрузок Оптимизированная IB.7z 2 \u041c\u0411 · 0 загрузок Сравнение версий.xlsx 11 \u043a\u0411 · 0 загрузок Оптимизировать таблицы считаю целесообразным, но нужно лишь сдвинуть приоритеты и оптимизировать не код, а сами формулы алгоритмов. Подождать лишние 15-20-25% времени обработки - это не та проблема, над которой действительно следует трудиться. Было бы ради чего...имхо..
Опубликовано 3 августа, 20215 г. Хорошая тема. Но я в этом точно не бум бум. А есть такая таблица Auto_Totalbomb-L10_FX2021.xlsm. Программа хорошая но грузит очень долго. Даже на неделе когда матчей мало грузит не меньше часа. Про выходные я вообще молчу. Не выставляет дату. Можно её оптимизировать? Auto_Totalbomb-L10_FX2021.xlsm
Опубликовано 3 августа, 20215 г. 50 минут назад, zxxxa сказал: Хорошая тема. Но я в этом точно не бум бум. А есть такая таблица Auto_Totalbomb-L10_FX2021.xlsm. Программа хорошая но грузит очень долго. Даже на неделе когда матчей мало грузит не меньше часа. Про выходные я вообще молчу. Не выставляет дату. Можно её оптимизировать? Auto_Totalbomb-L10_FX2021.xlsm 390 \u043a\u0411 · 2 загрузки дата же можно выбрать чего не хватает это архив и результаты и насчет что долго думает согласен
Опубликовано 3 августа, 20215 г. 15 минут назад, Adok сказал: дата же можно выбрать чего не хватает это архив и результаты и насчет что долго думает согласен Про дату это так. Самое главное это скорость загрузки
Опубликовано 4 августа, 20215 г. Просил оптимизировать. Теперь приходится просить ещё и отремонтировать. Перестала загружать.
Опубликовано 5 августа, 20215 г. В 04.08.2021 в 01:39, zxxxa сказал: Про дату это так. Самое главное это скорость загрузки Грузи без кэфов, 5 минут и готово
Опубликовано 5 августа, 20215 г. 6 часов назад, Александр Царегородцев сказал: Грузи без кэфов, 5 минут и готово Она теперь вообще не грузит
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.