setTimeout: do not calculate Timeout._when property

Dramatically improves Timer performance.
This commit is contained in:
wicked 2012-10-25 11:53:35 +07:00 committed by isaacs
parent 929e4d9c9a
commit 39058bef07

View File

@ -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();