Skip to content

Commit

Permalink
net: use rest parameters instead of arguments
Browse files Browse the repository at this point in the history
In v8 5.8, rest parameters are significantly faster than other ways
to create an array of the arguments.

Refs: nodejs#13430
  • Loading branch information
tniessen committed Jun 5, 2017
1 parent ce8bce4 commit 10ebc86
Showing 1 changed file with 5 additions and 17 deletions.
22 changes: 5 additions & 17 deletions lib/net.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,7 @@ function createServer(options, connectionListener) {
// connect(port, [host], [cb])
// connect(path, [cb]);
//
function connect() {
var args = new Array(arguments.length);
for (var i = 0; i < arguments.length; i++)
args[i] = arguments[i];
// TODO(joyeecheung): use destructuring when V8 is fast enough
function connect(...args) {
var normalized = normalizeArgs(args);
var options = normalized[0];
debug('createConnection', normalized);
Expand Down Expand Up @@ -934,19 +930,15 @@ function internalConnect(
}


Socket.prototype.connect = function() {
Socket.prototype.connect = function(...args) {
let normalized;
// If passed an array, it's treated as an array of arguments that have
// already been normalized (so we don't normalize more than once). This has
// been solved before in https://github.com/nodejs/node/pull/12342, but was
// reverted as it had unintended side effects.
if (Array.isArray(arguments[0]) && arguments[0][normalizedArgsSymbol]) {
normalized = arguments[0];
if (Array.isArray(args[0]) && args[0][normalizedArgsSymbol]) {
normalized = args[0];
} else {
var args = new Array(arguments.length);
for (var i = 0; i < arguments.length; i++)
args[i] = arguments[i];
// TODO(joyeecheung): use destructuring when V8 is fast enough
normalized = normalizeArgs(args);
}
const options = normalized[0];
Expand Down Expand Up @@ -1395,11 +1387,7 @@ function listenInCluster(server, address, port, addressType,
}


Server.prototype.listen = function() {
var args = new Array(arguments.length);
for (var i = 0; i < arguments.length; i++)
args[i] = arguments[i];
// TODO(joyeecheung): use destructuring when V8 is fast enough
Server.prototype.listen = function(...args) {
var normalized = normalizeArgs(args);
var options = normalized[0];
var cb = normalized[1];
Expand Down

0 comments on commit 10ebc86

Please sign in to comment.