Страницы: Пред. 1 2
RSS
Связанные умные таблицы с большим объёмом данных. Как ускорить пересчёт?
 
Тогд
Цитата
Jack Famous написал:
так и из формул. В формулах я ссылаюсь на столбцы умной таблицы
тогда это просто компактность. Хотя можно предположить что для обработки формулы записанной в имени, вызывается объект ,... и это на множестве операций тоже набежит. Можно проверить.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ: для обработки формулы записанной в имени, вызывается объект
кажется, я неправильно выразился — в самих диапазонах (столбцы умных таблиц), которым я дал имена могут быть или значения или формулы  :)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
В формулах я ссылаюсь на столбцы умной таблицы
А вот это вот уже не комильфо, ибо для каждой ячейки приходится залезать в диспетчер имен, находить там диапазон связанный с именем умной таблицы, а потом исходя из ссылки на столбец или группу столбцов вычислять реальный адрес диапазона, на который по факту нужно сослаться. На сколько быстро это все происходит - вопрос сильно открытый.
Я имел ввиду только использованием имен для того чтобы забирать таблицы в память там считать, а результат вываливать на лист или в ту же таблицу, тогда критичного замедления происходить не должно, если в коде все корректно.
З.Ы.
Jack Famous, не, ну именованным диапазоном ссылаться на кусок другого именованного диапазона, это конечно 5! Так точно не будет тормозить, да еще и формулы в таблицах. Это вообще страшный тупняк. От такой ерунды - формул в таблицах я избавился уже давно, благо PQ позволяет пересчитывать таблицу и писать результат в неё же. Алексей, подозреваю, что именно формулы в таблицах это и есть главный тормоз вашего инструмента.
Изменено: PooHkrd - 27.12.2019 13:37:33
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
именно формулы в таблицах это и есть главный тормоз вашего инструмента
Не все так однозначно. Excel умен, но расчет ведется в последовательности, которая может разойтись с мнением автора. При множественных взаимосвязях, может быть не зацикливанием а просто лишний пересчет. С учетом наличия SUMIF пересчитали что-то в диапазоне аргументов, пересчитай и тут, а из-за этого пересчитай там  ……  Уже писал однажды, что в далеких 95м-96м при не изменных формулах, но при заданной последовательности расчета диапазонов скорость расчета возрасла в разы.
По вопросам из тем форума, личку не читаю.
 
Цитата
PooHkrd: именованным диапазоном ссылаться на кусок другого именованного диапазона
у меня такого нет - в именованных диапазонах один и более столбцов умной таблицы ЦЕЛИКОМ
Цитата
PooHkrd: подозреваю, что именно формулы в таблицах это и есть главный тормоз вашего инструмента
основные причины тормозов выявлены в самом начале - это ИНДЕКС+ПОИСКПОЗ и СУММЕСЛИ. Очевидно, когда в двух таблицах по 20 тысяч строк есть такие монстрилы, то комбинации переборов "в лоб" составляют (20*10^3)^2 = 400 млн. Даже при учёте всей "умности" Excel'я, который явно не перебирает "в лоб", это всё-равно очень много. Замена их на макросы уже даёт серьёзный ощутимый вычислительный прирост

Неожиданностью же стало (БМВ нашёл), то, что ещё тупила UDFка, которая просто проверяла строку на пустоты и ошибки — вроде как при большом количестве итераций тоже способна нехило подгрузить систему. Вчера с БМВ полдня тестили, но я бы однозначно не сказал, что она как-то заметно грузит систему. 2 миилиона элементов массива, переданные функции обработались 3-4 секунды. Может выполнение в цикле дало бы более худший результат скорости, но я тестить не стал и просто заменил на макропроверки — хуже точно не будет  :D
Изменено: Jack Famous - 27.12.2019 14:58:40
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
Вчера с  БМВ  полдня тестили
ну не пол дня, да время не выполнения самой функции меня смущало, а множественный её вызов.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ: множественный её вызов
это я имел ввиду под "не тестил выполнение в цикле" - результат в цикле явно будет явно хуже, а на листе ещё более грустно
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:  Даже при учёте всей "умности" Excel'я, который явно не перебирает "в лоб",
ПОИСКПОЗ(что;где;0), миллион ячеек - максимум миллион итераций (тот самый "в лоб")
ПОИСКПОЗ(что;где;1), миллион ячеек - максимум 20 итераций (но сортированный массив!)
 
Цитата
vikttur: ПОИСКПОЗ(что;где;0), миллион ячеек - максимум миллион итераций (тот самый "в лоб")
ну вообще "в лоб" в моём понимании это "берём каждое значение из массива А и ищем его в массиве Б" ну ок - не нужно будет каждый раз пробегать массив Б целиком, но и не один раз тоже. То, что вы описали, это ближе к словарям и то там ПО ОДНОМУ проходу - первый раз собираем ключи из одного массива, а второй - проставляем их в другом диапазоне
Цитата
vikttur: максимум 20 итераций (но сортированный массив!)
да - я приводил ссылку на эту тему, где как раз рассказывается об этом способе log(N;2). Способ мне не подходит, т.к. таблица может сортироваться по-разному
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Честно говоря, я бы в подобном файле ушел от формул вообще. Делал бы все на макросах - именно макросах, с минимумом формул и UDF.
Ну и несколько словарей, инициируемых при открытии книги.
Изменено: Михаил Витальевич С. - 27.12.2019 19:09:17
 
Сам файл не видел, но по описанию проблемы, так и напрашивается использование Power Pivot.
No crime is so great as daring to Excel. (Winston Churchill)
 
Цитата
Maruf написал:
так и напрашивается использование Power Pivot.
Нет, PP здесь не в тему.
 
Цитата
Maruf: Сам файл не видел, но по описанию проблемы, так и напрашивается использование Power Pivot
"не зная броду, не суйся в воду"  :D
использование PP, PQ и PBI не рассматривается в принципе  ;)
Изменено: Jack Famous - 30.12.2019 09:16:43
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Всем здравствуйте! С наступающим вас Новым Годом, Планетяне!

Завершил оптимизацию (ускорение) таблиц и итоги вполне предсказуемые:
  • после замены =ПОИСКПОЗ() и =СУММЕСЛИ() на макросы со вставкой ушло ~80% времени пересчёта. То есть это наиболее эффективно сделать в первую очередь
  • УФ и множественный вызов макрофункции заберут ещё ~10-15% (УФ в бОльшей степени). Я от этих двух тоже отказался, оставил УФ только в небольших таблицах с итогами
  • =ИНДЕКС() при известной позиции тянет данные ОЧЕНЬ быстро и без проблем
Итого: перед созданием темы, пересчёт книги занимал порядка 25 секунд, сейчас мгновенно (почти незаметно)

Всем здоровья, счастья, удачи, денег и быстрых вычислений в Новом Году  :D  :idea:
Изменено: Jack Famous - 31.12.2019 12:55:22
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: Пред. 1 2
Наверх