From 39058bef0733e6fae3cf160d71935127eab97bdd Mon Sep 17 00:00:00 2001 From: wicked Date: Thu, 25 Oct 2012 11:53:35 +0700 Subject: [PATCH] setTimeout: do not calculate Timeout._when property Dramatically improves Timer performance. --- lib/timers.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/timers.js b/lib/timers.js index 3900d61c94..8431b2ddd9 100644 --- a/lib/timers.js +++ b/lib/timers.js @@ -263,12 +263,15 @@ var Timeout = function(after) { this._idleTimeout = after; this._idlePrev = this; this._idleNext = this; - this._when = Date.now() + after; + this._idleStart = null; + this._onTimeout = null; }; Timeout.prototype.unref = function() { if (!this._handle) { - var delay = this._when - Date.now(); + var now = Date.now(); + if (!this._idleStart) this._idleStart = now; + var delay = this._idleStart + this._idleTimeout - now; if (delay < 0) delay = 0; exports.unenroll(this); this._handle = new Timer();