From ca4576f377ce26b6c41b41d5caa9c6bc426e0142 Mon Sep 17 00:00:00 2001 From: Feross Aboukhadijeh Date: Mon, 28 Mar 2016 20:28:32 -0700 Subject: [PATCH] Perf: Use delete keyword to avoid tons of leftover keys in plain objects --- lib/swarm.js | 5 ++--- lib/tcp-pool.js | 24 ++++++++---------------- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/lib/swarm.js b/lib/swarm.js index 426c1239..6f169cb3 100644 --- a/lib/swarm.js +++ b/lib/swarm.js @@ -90,8 +90,7 @@ Object.defineProperty(Swarm.prototype, 'numConns', { var self = this var numConns = 0 for (var id in self._peers) { - var peer = self._peers[id] - if (peer && peer.connected) numConns += 1 + if (self._peers[id].connected) numConns += 1 } return numConns } @@ -218,7 +217,7 @@ Swarm.prototype.removePeer = function (id) { debug('removePeer %s', id) - self._peers[id] = null + delete self._peers[id] self._peersLength -= 1 peer.destroy() diff --git a/lib/tcp-pool.js b/lib/tcp-pool.js index bf75ebeb..7e95f6c8 100644 --- a/lib/tcp-pool.js +++ b/lib/tcp-pool.js @@ -64,12 +64,7 @@ TCPPool.removeSwarm = function (swarm, cb) { if (!pool) return cb() pool.removeSwarm(swarm) - var numSwarms = 0 - for (var infoHash in pool.swarms) { - var s = pool.swarms[infoHash] - if (s) numSwarms += 1 - } - if (numSwarms === 0) pool.destroy(cb) + if (Object.keys(pool.swarms).length === 0) pool.destroy(cb) else process.nextTick(cb) } @@ -85,7 +80,7 @@ TCPPool.removeSwarm = function (swarm, cb) { TCPPool.getDefaultListenPort = function (infoHash) { for (var port in tcpPools) { var pool = tcpPools[port] - if (pool && !pool.swarms[infoHash]) return pool.port + if (!pool.swarms[infoHash]) return pool.port } return 0 } @@ -125,7 +120,7 @@ TCPPool.prototype.addSwarm = function (swarm) { TCPPool.prototype.removeSwarm = function (swarm) { var self = this debug('remove swarm %s from tcp pool %s', swarm.infoHash, self.port) - self.swarms[swarm.infoHash] = null + delete self.swarms[swarm.infoHash] } /** @@ -144,7 +139,7 @@ TCPPool.prototype.destroy = function (cb) { conn.destroy() }) - tcpPools[self.port] = null + delete tcpPools[self.port] try { self.server.close(cb) @@ -165,7 +160,7 @@ TCPPool.prototype._onListening = function () { if (port !== self.port) { // `port` was 0 when `listen` was called; update to the port that node selected - tcpPools[self.port] = null + delete tcpPools[self.port] self.port = port tcpPools[self.port] = self } @@ -173,8 +168,7 @@ TCPPool.prototype._onListening = function () { self.listening = true for (var infoHash in self.swarms) { - var swarm = self.swarms[infoHash] - if (swarm) swarm._onListening(self.port) + self.swarms[infoHash]._onListening(self.port) } } @@ -226,10 +220,8 @@ TCPPool.prototype._onError = function (err) { self.destroy() for (var infoHash in self.swarms) { var swarm = self.swarms[infoHash] - if (swarm) { - self.removeSwarm(swarm) - swarm._onError(err) - } + self.removeSwarm(swarm) + swarm._onError(err) } }