Установлен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 при перемещении мыши (на хроме). Кажется, он дороже, чем вы думаете. Не знаю, почему.