From bb81accb163bf53eef08dcb53ee9d51a45e9a87b Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Fri, 5 Feb 2021 16:17:57 +0100 Subject: [PATCH] lib: use .push and .unshift instead of .concat Using `push` and `unshift` methods is more performant than reassigning a new array created with `concat`. PR-URL: https://github.com/nodejs/node/pull/37239 Reviewed-By: James M Snell --- lib/_http_common.js | 4 ++-- lib/internal/main/worker_thread.js | 4 ++-- lib/internal/modules/cjs/loader.js | 7 ++++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/_http_common.js b/lib/_http_common.js index f249a86776b580..0d4bdcff05f56b 100644 --- a/lib/_http_common.js +++ b/lib/_http_common.js @@ -22,7 +22,7 @@ 'use strict'; const { - ArrayPrototypeConcat, + ArrayPrototypePushApply, MathMin, Symbol, RegExpPrototypeTest, @@ -66,7 +66,7 @@ function parserOnHeaders(headers, url) { // Once we exceeded headers limit - stop collecting them if (this.maxHeaderPairs <= 0 || this._headers.length < this.maxHeaderPairs) { - this._headers = ArrayPrototypeConcat(this._headers, headers); + ArrayPrototypePushApply(this._headers, headers); } this._url += url; } diff --git a/lib/internal/main/worker_thread.js b/lib/internal/main/worker_thread.js index 36c5d4c5675413..6b54220d0aeb18 100644 --- a/lib/internal/main/worker_thread.js +++ b/lib/internal/main/worker_thread.js @@ -4,8 +4,8 @@ // message port. const { - ArrayPrototypeConcat, ArrayPrototypeForEach, + ArrayPrototypePushApply, ArrayPrototypeSplice, ObjectDefineProperty, PromisePrototypeCatch, @@ -126,7 +126,7 @@ port.on('message', (message) => { loadPreloadModules(); initializeFrozenIntrinsics(); if (argv !== undefined) { - process.argv = ArrayPrototypeConcat(process.argv, argv); + ArrayPrototypePushApply(process.argv, argv); } publicWorker.parentPort = publicPort; publicWorker.workerData = workerData; diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index f9ef3352761699..daf89a411e8928 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -32,6 +32,7 @@ const { ArrayPrototypeSlice, ArrayPrototypeSplice, ArrayPrototypeUnshift, + ArrayPrototypeUnshiftApply, Boolean, Error, JSONParse, @@ -1208,7 +1209,7 @@ Module._initPaths = function() { path.resolve(process.execPath, '..') : path.resolve(process.execPath, '..', '..'); - let paths = [path.resolve(prefixDir, 'lib', 'node')]; + const paths = [path.resolve(prefixDir, 'lib', 'node')]; if (homeDir) { ArrayPrototypeUnshift(paths, path.resolve(homeDir, '.node_libraries')); @@ -1216,10 +1217,10 @@ Module._initPaths = function() { } if (nodePath) { - paths = ArrayPrototypeConcat(ArrayPrototypeFilter( + ArrayPrototypeUnshiftApply(paths, ArrayPrototypeFilter( StringPrototypeSplit(nodePath, path.delimiter), Boolean - ), paths); + )); } modulePaths = paths;