Переодически сталкиваюсь с относительно точным измерением скорости пересчёта на этом форуме. Стало интересно как именно это делается...может кто-нибудь поделиться своими вариантами пожалуйста?
Измерение скорости работы формулы.
31.07.2009 19:56:11
|
|
|
|
31.07.2009 20:23:48
см. надстройку RangeCalc.zip здесь:
Очень важно: перед проведением замеров, обязательно менять режим пересчета на ручной, иначе данные будут искаженными! Вот тут можно почитать про особенности мотора расчетов Excel: Внимание! На указанном сайте тонны информации, но навигация малоинтуитивна. Нужно обращать внимание на наличие ссылок в верхней части страницы и полосы прокрутки в правой ее части. Есть еще менее точный способ: Sub Test() t=Timer Range("A1:B2").Calculate MsgBox (Timer - t)*1000 & "msec" End Sub
KL
|
|
|
|
31.07.2009 20:59:46
Спасибо.
*пошёл изучать* |
|
|
|
31.07.2009 21:47:30
KL, Вы в каком часовом поясе?
Не знаю как Вам, а мне трудно изучать в пятницу вечером, после пива (много) новую надстройку. Но посмотрю.
Bite my shiny metal ass!
|
|
|
|
31.07.2009 21:51:57
Лузер, открою страшную тайну: KL в Мадриде сидит по кондиционером и хлещет холодное пиво :-) Но у него тоже... пятница.
|
|
|
|
31.07.2009 22:05:10
:-D
KL
|
|
|
|
01.08.2009 13:05:26
во-во..
к тому же в действия excel часто вмешиваются разные службы.. в любом случае лучше взять за большее время
Живи и дай жить..
|
|
|
|
03.08.2009 12:05:31
{quote}{login=Лузер™}{date=03.08.2009 10:47}{thema=}{post}На sql.ru не зарегистрирован. Если такая дискуссия имело место, был бы благодарен за ссылку.
"Я например использую сравнение формул только для форумов" Право сказать, поленился дописать про сравнение скорости только для форума. Чисто академический интерес. У меня практически нет "тяжелых" расчетов. В одном месте, где потребовалась куча ВПР()ов, а исходные данные для расчета подгружаются макросом, я этим же макросом вставляю формулы, пересчитываю, заменяю значениями. Эксель без формул легче и быстрее :) "Кстати масштабирование замеров скорости с помощью цикла еще сильнее искажает результат и неверно влияет на конечное соотношение скоростей формул ;-)" - Хотелось бы услышать обоснование, если не сильно затруднит.{/post}{/quote} Ссылку искать долго и лень, если честно, - это было так к слову. Насчет обоснования - оно простое: для пересчетов Excel использует механизм SmartCalc. Какие-то вещи он считает от раза к разу, а какие-то - только лишь когда это необходимо. Например, можно поймать формулу в тот момент, когда пересчет ее займет вдвое больше времени, чем все последующие разы - это тот момент, когда Excel перестраивает все зависимости. Формулы, построенные по принципу =ЕСЛИ(условие, ПростоеВыражение, СложноеВыражение) затрачивают различное время на пересчет в зависимости от выполнения или нет условия. Если руководствоваться промером скорости одной инстанции этой формулы, можно прийти к крайне искаженным результатам. Есть еще случаи, когда наличие более одной инстанции формулы не ведет к увеличение времени в прямой пропорции, например формула массива введенная сразу в несколько ячеек, и т.д. Подробнее здесь:
KL
|
|
|
|
03.08.2009 19:04:52
Согласен :-)
KL
|
|
|
|
10.08.2009 10:00:44
Можно и я к вам?
Здесь список летучих формул в сообщении KL. Здесь Pavel55 приводил более расширенный список летучих формул. Тут же ZVI упоминал о летучести условного форматирования. Есть ли еще функции или опции XL, которые не встречаются в этих темах, но исподтишка пакостят, тормозя расчеты? Можно ли с помощью каких-нибудь хитростей "обмануть" летучесть (кроме замены на нелетучие и отключение автопересчета)? |
|
|
|
10.08.2009 10:02:58
Не верь глазам своим - в предыдущем посте "формул" читать как "функций" :)
|
|
|
|
10.08.2009 12:39:23
На абсолютную летучесть можно, кстати, нарваться, и не используя летучих функций и других явно летучих действий, а просто превысив лимиты зависимостей :-)
Думаю, что если не тратить свое время на возню с быстродействием, то, когда быстродействие понадобится, врядли будешь в состоянии диагносцировать проблему ;-)
KL
|
|
|
|
10.08.2009 12:42:05
Вообще, летучесть сама по себе не влияет на быстродействие. Она лишь усугубляет проблему если формула медленная.
KL
|
|
|
|
11.08.2009 10:22:09
Ув. ZVI, можно ли ваш пример переделать для совмещения двух списков, используя 1 столбец как опорный?
|
|
|
|
11.08.2009 13:26:15
Пробуем
|
||||
|
|
|||