УстановленTimeout/clearTimeout дорогой?
У меня есть что-то вроде следующего:
var myTimeout;
function delayStuffUntil( when ){
if( myTimeout) clearTimeout( myTimeout );
myTimeout = setTimeout( stuff, when - Date.now() );
}
delayStuffUntil
будет вызван хорошей сделкой, и, вероятно, он будет вызываться с тем же значением when
несколько раз подряд.
Является ли setTimeout
/clearTimeout
достаточно дорогим, что я должен проверить текущую when
на мое последнее значение when
(и только менять таймеры, если они разные)?
Я думал об этом, но правда в том, что when
немного сложнее сравнивать, и я решил, что преждевременная оптимизация - это корень всего зла, поэтому я мог бы работать, когда мне не нужно было.
Ответы
Ответ 1
setTimeout
и clearTimeout
сами по себе не очень дороги.
На самом деле функция "материал" - это то, о чем вам нужно беспокоиться.
Если для работы требуется много времени, он может заблокировать пользовательский интерфейс, если он будет вызван слишком часто.
Ответ 2
Итак, я только что нашел некоторые проблемы с производительностью, когда я вызывал clearTimeout и setTimeout при перемещении мыши (на хроме). Кажется, он дороже, чем вы думаете. Не знаю, почему.