A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/nodejs/node/commit/b882148999 below:

improve path.resolve() performance when used as process.cwd() · nodejs/node@b882148 · GitHub

File tree Expand file treeCollapse file tree 8 files changed

+40

-15

lines changed

Filter options

Expand file treeCollapse file tree 8 files changed

+40

-15

lines changed Original file line number Diff line number Diff line change

@@ -16,8 +16,8 @@ function main({ n, paths }) {

16 16 17 17

bench.start();

18 18

for (let i = 0; i < n; i++) {

19 -

if (i % 3 === 0) {

20 -

copy[1] = `${orig}${i}`;

19 +

if (i % 5 === 0) {

20 +

copy[1] = `${orig}/${i}`;

21 21

posix.join(...copy);

22 22

} else {

23 23

posix.join(...args);

Original file line number Diff line number Diff line change

@@ -16,8 +16,8 @@ function main({ n, paths }) {

16 16 17 17

bench.start();

18 18

for (let i = 0; i < n; i++) {

19 -

if (i % 3 === 0) {

20 -

copy[1] = `${orig}${i}`;

19 +

if (i % 5 === 0) {

20 +

copy[1] = `${orig}\\${i}`;

21 21

win32.join(...copy);

22 22

} else {

23 23

win32.join(...args);

Original file line number Diff line number Diff line change

@@ -17,7 +17,7 @@ const bench = common.createBenchmark(main, {

17 17

function main({ n, path }) {

18 18

bench.start();

19 19

for (let i = 0; i < n; i++) {

20 -

posix.normalize(i % 3 === 0 ? `${path}${i}` : path);

20 +

posix.normalize(i % 5 === 0 ? `${path}/${i}` : path);

21 21

}

22 22

bench.end(n);

23 23

}

Original file line number Diff line number Diff line change

@@ -17,7 +17,7 @@ const bench = common.createBenchmark(main, {

17 17

function main({ n, path }) {

18 18

bench.start();

19 19

for (let i = 0; i < n; i++) {

20 -

win32.normalize(i % 3 === 0 ? `${path}${i}` : path);

20 +

win32.normalize(i % 5 === 0 ? `${path}\\${i}` : path);

21 21

}

22 22

bench.end(n);

23 23

}

Original file line number Diff line number Diff line change

@@ -4,23 +4,26 @@ const { posix } = require('path');

4 4 5 5

const bench = common.createBenchmark(main, {

6 6

paths: [

7 +

'empty',

7 8

'',

9 +

'.',

8 10

['', ''].join('|'),

9 11

['foo/bar', '/tmp/file/', '..', 'a/../subfile'].join('|'),

10 12

['a/b/c/', '../../..'].join('|'),

13 +

['/a/b/c/', 'abc'].join('|'),

11 14

],

12 15

n: [1e5],

13 16

});

14 17 15 18

function main({ n, paths }) {

16 -

const args = paths.split('|');

19 +

const args = paths === 'empty' ? [] : paths.split('|');

17 20

const copy = [...args];

18 -

const orig = copy[0];

21 +

const orig = copy[0] ?? '';

19 22 20 23

bench.start();

21 24

for (let i = 0; i < n; i++) {

22 -

if (i % 3 === 0) {

23 -

copy[0] = `${orig}${i}`;

25 +

if (i % 5 === 0) {

26 +

copy[0] = `${orig}/${i}`;

24 27

posix.resolve(...copy);

25 28

} else {

26 29

posix.resolve(...args);

Original file line number Diff line number Diff line change

@@ -4,7 +4,9 @@ const { win32 } = require('path');

4 4 5 5

const bench = common.createBenchmark(main, {

6 6

paths: [

7 +

'empty',

7 8

'',

9 +

'.',

8 10

['', ''].join('|'),

9 11

['c:/ignore', 'd:\\a/b\\c/d', '\\e.exe'].join('|'),

10 12

['c:/blah\\blah', 'd:/games', 'c:../a'].join('|'),

@@ -13,14 +15,14 @@ const bench = common.createBenchmark(main, {

13 15

});

14 16 15 17

function main({ n, paths }) {

16 -

const args = paths.split('|');

18 +

const args = paths === 'empty' ? [] : paths.split('|');

17 19

const copy = [...args];

18 -

const orig = copy[0];

20 +

const orig = copy[0] ?? '';

19 21 20 22

bench.start();

21 23

for (let i = 0; i < n; i++) {

22 -

if (i % 3 === 0) {

23 -

copy[0] = `${orig}${i}`;

24 +

if (i % 5 === 0) {

25 +

copy[0] = `${orig}\\${i}`;

24 26

win32.resolve(...copy);

25 27

} else {

26 28

win32.resolve(...args);

Original file line number Diff line number Diff line change

@@ -95,7 +95,7 @@ function normalizeString(path, allowAboveRoot, separator, isPathSeparator) {

95 95

StringPrototypeCharCodeAt(res, res.length - 1) !== CHAR_DOT ||

96 96

StringPrototypeCharCodeAt(res, res.length - 2) !== CHAR_DOT) {

97 97

if (res.length > 2) {

98 -

const lastSlashIndex = StringPrototypeLastIndexOf(res, separator);

98 +

const lastSlashIndex = res.length - lastSegmentLength - 1;

99 99

if (lastSlashIndex === -1) {

100 100

res = '';

101 101

lastSegmentLength = 0;

@@ -163,6 +163,8 @@ function _format(sep, pathObject) {

163 163

return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`;

164 164

}

165 165 166 +

const forwardSlashRegExp = /\//g;

167 + 166 168

const win32 = {

167 169

/**

168 170

* path.resolve([from ...], to)

@@ -186,6 +188,14 @@ const win32 = {

186 188

}

187 189

} else if (resolvedDevice.length === 0) {

188 190

path = process.cwd();

191 +

// Fast path for current directory

192 +

if (args.length === 0 || ((args.length === 1 && (args[0] === '' || args[0] === '.')) &&

193 +

isPathSeparator(StringPrototypeCharCodeAt(path, 0)))) {

194 +

if (!isWindows) {

195 +

path = StringPrototypeReplace(path, forwardSlashRegExp, '\\');

196 +

}

197 +

return path;

198 +

}

189 199

} else {

190 200

// Windows has the concept of drive-specific current working

191 201

// directories. If we've resolved a drive letter but not yet an

@@ -1171,6 +1181,12 @@ const posix = {

1171 1181

* @returns {string}

1172 1182

*/

1173 1183

resolve(...args) {

1184 +

if (args.length === 0 || (args.length === 1 && (args[0] === '' || args[0] === '.'))) {

1185 +

const cwd = posixCwd();

1186 +

if (StringPrototypeCharCodeAt(cwd, 0) === CHAR_FORWARD_SLASH) {

1187 +

return cwd;

1188 +

}

1189 +

}

1174 1190

let resolvedPath = '';

1175 1191

let resolvedAbsolute = false;

1176 1192 Original file line number Diff line number Diff line change

@@ -24,6 +24,8 @@ const resolveTests = [

24 24

[['c:/ignore', 'd:\\a/b\\c/d', '\\e.exe'], 'd:\\e.exe'],

25 25

[['c:/ignore', 'c:/some/file'], 'c:\\some\\file'],

26 26

[['d:/ignore', 'd:some/dir//'], 'd:\\ignore\\some\\dir'],

27 +

[[], process.cwd()],

28 +

[[''], process.cwd()],

27 29

[['.'], process.cwd()],

28 30

[['//server/share', '..', 'relative\\'], '\\\\server\\share\\relative'],

29 31

[['c:/', '//'], 'c:\\'],

@@ -42,6 +44,8 @@ const resolveTests = [

42 44

[[['/var/lib', '../', 'file/'], '/var/file'],

43 45

[['/var/lib', '/../', 'file/'], '/file'],

44 46

[['a/b/c/', '../../..'], posixyCwd],

47 +

[[], posixyCwd],

48 +

[[''], posixyCwd],

45 49

[['.'], posixyCwd],

46 50

[['/some/dir', '.', '/absolute/'], '/absolute'],

47 51

[['/foo/tmp.3/', '../tmp.3/cycles/root.js'], '/foo/tmp.3/cycles/root.js'],

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4