Skip to content

Commit 472a665

Browse files
committed
net: use rest parameters instead of arguments
In v8 6.0, rest parameters are significantly faster than other ways to create an array of the arguments, even for small numbers. PR-URL: #13472 Refs: #13430 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
1 parent d98606f commit 472a665

File tree

1 file changed

+5
-17
lines changed

1 file changed

+5
-17
lines changed

lib/net.js

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,7 @@ function createServer(options, connectionListener) {
9393
// connect(port, [host], [cb])
9494
// connect(path, [cb]);
9595
//
96-
function connect() {
97-
var args = new Array(arguments.length);
98-
for (var i = 0; i < arguments.length; i++)
99-
args[i] = arguments[i];
100-
// TODO(joyeecheung): use destructuring when V8 is fast enough
96+
function connect(...args) {
10197
var normalized = normalizeArgs(args);
10298
var options = normalized[0];
10399
debug('createConnection', normalized);
@@ -950,19 +946,15 @@ function internalConnect(
950946
}
951947

952948

953-
Socket.prototype.connect = function() {
949+
Socket.prototype.connect = function(...args) {
954950
let normalized;
955951
// If passed an array, it's treated as an array of arguments that have
956952
// already been normalized (so we don't normalize more than once). This has
957953
// been solved before in https://github.com/nodejs/node/pull/12342, but was
958954
// reverted as it had unintended side effects.
959-
if (Array.isArray(arguments[0]) && arguments[0][normalizedArgsSymbol]) {
960-
normalized = arguments[0];
955+
if (Array.isArray(args[0]) && args[0][normalizedArgsSymbol]) {
956+
normalized = args[0];
961957
} else {
962-
var args = new Array(arguments.length);
963-
for (var i = 0; i < arguments.length; i++)
964-
args[i] = arguments[i];
965-
// TODO(joyeecheung): use destructuring when V8 is fast enough
966958
normalized = normalizeArgs(args);
967959
}
968960
var options = normalized[0];
@@ -1414,11 +1406,7 @@ function listenInCluster(server, address, port, addressType,
14141406
}
14151407

14161408

1417-
Server.prototype.listen = function() {
1418-
var args = new Array(arguments.length);
1419-
for (var i = 0; i < arguments.length; i++)
1420-
args[i] = arguments[i];
1421-
// TODO(joyeecheung): use destructuring when V8 is fast enough
1409+
Server.prototype.listen = function(...args) {
14221410
var normalized = normalizeArgs(args);
14231411
var options = normalized[0];
14241412
var cb = normalized[1];

0 commit comments

Comments
 (0)