Browse Source

benchmark: split path benchmarks

This commit splits each path benchmark into separate posix and
Windows benchmark files. This allows benchmarking (platform-)specific
inputs against specific platforms (only).

PR-URL: https://github.com/nodejs/node/pull/5123
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: James M Snell <jasnell@gmail.com>
process-exit-stdio-flushing
Brian White 9 years ago
committed by James M Snell
parent
commit
e1348b0819
  1. 43
      benchmark/path/basename-posix.js
  2. 43
      benchmark/path/basename-win32.js
  3. 26
      benchmark/path/basename.js
  4. 21
      benchmark/path/dirname-posix.js
  5. 34
      benchmark/path/dirname-win32.js
  6. 37
      benchmark/path/extname-posix.js
  7. 37
      benchmark/path/extname-win32.js
  8. 33
      benchmark/path/format-posix.js
  9. 35
      benchmark/path/format-win32.js
  10. 22
      benchmark/path/isAbsolute-posix.js
  11. 33
      benchmark/path/isAbsolute-win32.js
  12. 34
      benchmark/path/isAbsolute.js
  13. 15
      benchmark/path/join-posix.js
  14. 28
      benchmark/path/join-win32.js
  15. 31
      benchmark/path/makeLong-win32.js
  16. 20
      benchmark/path/normalize-posix.js
  17. 33
      benchmark/path/normalize-win32.js
  18. 24
      benchmark/path/parse-posix.js
  19. 35
      benchmark/path/parse-win32.js
  20. 40
      benchmark/path/relative-posix.js
  21. 38
      benchmark/path/relative-win32.js
  22. 33
      benchmark/path/relative.js
  23. 18
      benchmark/path/resolve-posix.js
  24. 31
      benchmark/path/resolve-win32.js

43
benchmark/path/basename-posix.js

@ -0,0 +1,43 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
pathext: [
'',
'/',
'/foo',
'/foo/.bar.baz',
['/foo/.bar.baz', '.baz'].join('|'),
'foo',
'foo/bar.',
['foo/bar.', '.'].join('|'),
'/foo/bar/baz/asdf/quux.html',
['/foo/bar/baz/asdf/quux.html', '.html'].join('|')
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.posix;
var input = '' + conf.pathext;
var ext;
var extIdx = input.indexOf('|');
if (extIdx !== -1) {
ext = input.slice(extIdx + 1);
input = input.slice(0, extIdx);
}
// Force optimization before starting the benchmark
p.basename(input, ext);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.basename)');
p.basename(input, ext);
bench.start();
for (var i = 0; i < n; i++) {
p.basename(input, ext);
}
bench.end(n);
}

43
benchmark/path/basename-win32.js

@ -0,0 +1,43 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
pathext: [
'',
'C:\\',
'C:\\foo',
'D:\\foo\\.bar.baz',
['E:\\foo\\.bar.baz','.baz'].join('|'),
'foo',
'foo\\bar.',
['foo\\bar.', '.'].join('|'),
'\\foo\\bar\\baz\\asdf\\quux.html',
['\\foo\\bar\\baz\\asdf\\quux.html', '.html'].join('|')
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.win32;
var input = '' + conf.pathext;
var ext;
var extIdx = input.indexOf('|');
if (extIdx !== -1) {
ext = input.slice(extIdx + 1);
input = input.slice(0, extIdx);
}
// Force optimization before starting the benchmark
p.basename(input, ext);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.basename)');
p.basename(input, ext);
bench.start();
for (var i = 0; i < n; i++) {
p.basename(input, ext);
}
bench.end(n);
}

26
benchmark/path/basename.js

@ -1,26 +0,0 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
type: ['win32', 'posix'],
n: [1e6],
});
function main(conf) {
var n = +conf.n;
var p = path[conf.type];
// Force optimization before starting the benchmark
p.basename('/foo/bar/baz/asdf/quux.html');
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.basename)');
p.basename('/foo/bar/baz/asdf/quux.html');
bench.start();
for (var i = 0; i < n; i++) {
p.basename('/foo/bar/baz/asdf/quux.html');
p.basename('/foo/bar/baz/asdf/quux.html', '.html');
}
bench.end(n);
}

21
benchmark/path/dirname.js → benchmark/path/dirname-posix.js

@ -3,23 +3,32 @@ var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
type: ['win32', 'posix'],
n: [1e6],
path: [
'',
'/',
'/foo',
'/foo/bar',
'foo',
'foo/bar',
'/foo/bar/baz/asdf/quux'
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path[conf.type];
var p = path.posix;
var input = '' + conf.path;
// Force optimization before starting the benchmark
p.dirname('/foo/bar/baz/asdf/quux');
p.dirname(input);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.dirname)');
p.dirname('/foo/bar/baz/asdf/quux');
p.dirname(input);
bench.start();
for (var i = 0; i < n; i++) {
p.dirname('/foo/bar/baz/asdf/quux');
p.dirname(input);
}
bench.end(n);
}

34
benchmark/path/dirname-win32.js

@ -0,0 +1,34 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
path: [
'',
'\\',
'\\foo',
'C:\\foo\\bar',
'foo',
'foo\\bar',
'D:\\foo\\bar\\baz\\asdf\\quux'
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.win32;
var input = '' + conf.path;
// Force optimization before starting the benchmark
p.dirname(input);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.dirname)');
p.dirname(input);
bench.start();
for (var i = 0; i < n; i++) {
p.dirname(input);
}
bench.end(n);
}

37
benchmark/path/extname-posix.js

@ -0,0 +1,37 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
path: [
'',
'/',
'/foo',
'foo/.bar.baz',
'index.html',
'index',
'foo/bar/..baz.quux',
'foo/bar/...baz.quux',
'/foo/bar/baz/asdf/quux',
'/foo/bar/baz/asdf/quux.foobarbazasdfquux'
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.posix;
var input = '' + conf.path;
// Force optimization before starting the benchmark
p.extname(input);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.extname)');
p.extname(input);
bench.start();
for (var i = 0; i < n; i++) {
p.extname(input);
}
bench.end(n);
}

37
benchmark/path/extname-win32.js

@ -0,0 +1,37 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
path: [
'',
'\\',
'C:\\foo',
'foo\\.bar.baz',
'index.html',
'index',
'foo\\bar\\..baz.quux',
'foo\\bar\\...baz.quux',
'D:\\foo\\bar\\baz\\asdf\\quux',
'\\foo\\bar\\baz\\asdf\\quux.foobarbazasdfquux'
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.win32;
var input = '' + conf.path;
// Force optimization before starting the benchmark
p.extname(input);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.extname)');
p.extname(input);
bench.start();
for (var i = 0; i < n; i++) {
p.extname(input);
}
bench.end(n);
}

33
benchmark/path/format.js → benchmark/path/format-posix.js

@ -3,36 +3,33 @@ var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
type: ['win32', 'posix'],
n: [1e7],
props: [
['/', '/home/user/dir', 'index.html', '.html', 'index'].join('|')
],
n: [1e7]
});
function main(conf) {
var n = +conf.n;
var p = path[conf.type];
var test = conf.type === 'win32' ? {
root: 'C:\\',
dir: 'C:\\path\\dir',
base: 'index.html',
ext: '.html',
name: 'index'
} : {
root : '/',
dir : '/home/user/dir',
base : 'index.html',
ext : '.html',
name : 'index'
var p = path.posix;
var props = ('' + conf.props).split('|');
var obj = {
root: props[0] || '',
dir: props[1] || '',
base: props[2] || '',
ext: props[3] || '',
name: props[4] || '',
};
// Force optimization before starting the benchmark
p.format(test);
p.format(obj);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.format)');
p.format(test);
p.format(obj);
bench.start();
for (var i = 0; i < n; i++) {
p.format(test);
p.format(obj);
}
bench.end(n);
}

35
benchmark/path/format-win32.js

@ -0,0 +1,35 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
props: [
['C:\\', 'C:\\path\\dir', 'index.html', '.html', 'index'].join('|')
],
n: [1e7]
});
function main(conf) {
var n = +conf.n;
var p = path.win32;
var props = ('' + conf.props).split('|');
var obj = {
root: props[0] || '',
dir: props[1] || '',
base: props[2] || '',
ext: props[3] || '',
name: props[4] || '',
};
// Force optimization before starting the benchmark
p.format(obj);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.format)');
p.format(obj);
bench.start();
for (var i = 0; i < n; i++) {
p.format(obj);
}
bench.end(n);
}

22
benchmark/path/extname.js → benchmark/path/isAbsolute-posix.js

@ -3,24 +3,30 @@ var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
type: ['win32', 'posix'],
n: [1e6],
path: [
'',
'.',
'/foo/bar',
'/baz/..',
'bar/baz'
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path[conf.type];
var p = path.posix;
var input = '' + conf.path;
// Force optimization before starting the benchmark
p.extname('index.html');
p.isAbsolute(input);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.extname)');
p.extname('index.html');
eval('%OptimizeFunctionOnNextCall(p.isAbsolute)');
p.isAbsolute(input);
bench.start();
for (var i = 0; i < n; i++) {
p.extname('index.html');
p.extname('index');
p.isAbsolute(input);
}
bench.end(n);
}

33
benchmark/path/isAbsolute-win32.js

@ -0,0 +1,33 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
path: [
'',
'.',
'//server',
'C:\\baz\\..',
'C:baz\\..',
'bar\\baz'
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.win32;
var input = '' + conf.path;
// Force optimization before starting the benchmark
p.isAbsolute(input);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.isAbsolute)');
p.isAbsolute(input);
bench.start();
for (var i = 0; i < n; i++) {
p.isAbsolute(input);
}
bench.end(n);
}

34
benchmark/path/isAbsolute.js

@ -1,34 +0,0 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
type: ['win32', 'posix'],
n: [1e6],
});
function main(conf) {
var n = +conf.n;
var p = path[conf.type];
var tests = conf.type === 'win32'
? ['//server', 'C:\\baz\\..', 'bar\\baz', '.']
: ['/foo/bar', '/baz/..', 'bar/baz', '.'];
// Force optimization before starting the benchmark
p.isAbsolute(tests[0]);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.isAbsolute)');
p.isAbsolute(tests[0]);
bench.start();
for (var i = 0; i < n; i++) {
runTests(p, tests);
}
bench.end(n);
}
function runTests(p, tests) {
for (var i = 0; i < tests.length; i++) {
p.isAbsolute(tests[i]);
}
}

15
benchmark/path/join.js → benchmark/path/join-posix.js

@ -3,23 +3,26 @@ var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
type: ['win32', 'posix'],
n: [1e6],
paths: [
['/foo', 'bar', '', 'baz/asdf', 'quux', '..'].join('|')
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path[conf.type];
var p = path.posix;
var args = ('' + conf.paths).split('|');
// Force optimization before starting the benchmark
p.join('/foo', 'bar', '', 'baz/asdf', 'quux', '..');
p.join.apply(null, args);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.join)');
p.join('/foo', 'bar', '', 'baz/asdf', 'quux', '..');
p.join.apply(null, args);
bench.start();
for (var i = 0; i < n; i++) {
p.join('/foo', 'bar', '', 'baz/asdf', 'quux', '..');
p.join.apply(null, args);
}
bench.end(n);
}

28
benchmark/path/join-win32.js

@ -0,0 +1,28 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
paths: [
['C:\\foo', 'bar', '', 'baz\\asdf', 'quux', '..'].join('|')
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.win32;
var args = ('' + conf.paths).split('|');
// Force optimization before starting the benchmark
p.join.apply(null, args);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.join)');
p.join.apply(null, args);
bench.start();
for (var i = 0; i < n; i++) {
p.join.apply(null, args);
}
bench.end(n);
}

31
benchmark/path/makeLong-win32.js

@ -0,0 +1,31 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
path: [
'foo\\bar',
'C:\\foo',
'\\\\foo\\bar',
'\\\\?\\foo'
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.win32;
var input = '' + conf.path;
// Force optimization before starting the benchmark
p._makeLong(input);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p._makeLong)');
p._makeLong(input);
bench.start();
for (var i = 0; i < n; i++) {
p._makeLong(input);
}
bench.end(n);
}

20
benchmark/path/normalize.js → benchmark/path/normalize-posix.js

@ -3,23 +3,31 @@ var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
type: ['win32', 'posix'],
n: [1e6],
path: [
'',
'.',
'/../',
'/foo',
'/foo/bar',
'/foo/bar//baz/asdf/quux/..'
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path[conf.type];
var p = path.posix;
var input = '' + conf.path;
// Force optimization before starting the benchmark
p.normalize('/foo/bar//baz/asdf/quux/..');
p.normalize(input);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.normalize)');
p.normalize('/foo/bar//baz/asdf/quux/..');
p.normalize(input);
bench.start();
for (var i = 0; i < n; i++) {
p.normalize('/foo/bar//baz/asdf/quux/..');
p.normalize(input);
}
bench.end(n);
}

33
benchmark/path/normalize-win32.js

@ -0,0 +1,33 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
path: [
'',
'.',
'C:\\..\\',
'C:\\foo',
'C:\\foo\\bar',
'C:\\foo\\bar\\\\baz\\asdf\\quux\\..'
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.win32;
var input = '' + conf.path;
// Force optimization before starting the benchmark
p.normalize(input);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.normalize)');
p.normalize(input);
bench.start();
for (var i = 0; i < n; i++) {
p.normalize(input);
}
bench.end(n);
}

24
benchmark/path/parse.js → benchmark/path/parse-posix.js

@ -3,26 +3,32 @@ var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
type: ['win32', 'posix'],
n: [1e6],
path: [
'',
'/',
'/foo',
'/foo/bar.baz',
'foo/.bar.baz',
'foo/bar',
'/foo/bar/baz/asdf/.quux'
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path[conf.type];
var test = conf.type === 'win32'
? 'C:\\path\\dir\\index.html'
: '/home/user/dir/index.html';
var p = path.posix;
var input = '' + conf.path;
// Force optimization before starting the benchmark
p.parse(test);
p.parse(input);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.parse)');
p.parse(test);
p.parse(input);
bench.start();
for (var i = 0; i < n; i++) {
p.parse(test);
p.parse(input);
}
bench.end(n);
}

35
benchmark/path/parse-win32.js

@ -0,0 +1,35 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
path: [
'',
'C:\\',
'C:\\foo',
'\\foo',
'E:\\foo\\bar.baz',
'foo\\.bar.baz',
'foo\\bar',
'\\foo\\bar\\baz\\asdf\\.quux'
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.win32;
var input = '' + conf.path;
// Force optimization before starting the benchmark
p.parse(input);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.parse)');
p.parse(input);
bench.start();
for (var i = 0; i < n; i++) {
p.parse(input);
}
bench.end(n);
}

40
benchmark/path/relative-posix.js

@ -0,0 +1,40 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
paths: [
['/data/orandea/test/aaa', '/data/orandea/impl/bbb'].join('|'),
['/', '/var'].join('|'),
['/', '/'].join('|'),
['/var', '/bin'].join('|'),
['/foo/bar/baz/quux', '/'].join('|'),
['/foo/bar/baz/quux', '/foo/bar/baz/quux'].join('|'),
['/foo/bar/baz/quux', '/var/log'].join('|')
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.posix;
var from = '' + conf.paths;
var to = '';
var delimIdx = from.indexOf('|');
if (delimIdx > -1) {
to = from.slice(delimIdx + 1);
from = from.slice(0, delimIdx);
}
// Force optimization before starting the benchmark
p.relative(from, to);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.relative)');
p.relative(from, to);
bench.start();
for (var i = 0; i < n; i++) {
p.relative(from, to);
}
bench.end(n);
}

38
benchmark/path/relative-win32.js

@ -0,0 +1,38 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
paths: [
['C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb'].join('|'),
['C:\\', 'D:\\'].join('|'),
['C:\\foo\\bar\\baz', 'C:\\foo\\bar\\baz'].join('|'),
['C:\\foo\\BAR\\BAZ', 'C:\\foo\\bar\\baz'].join('|'),
['C:\\foo\\bar\\baz\\quux', 'C:\\'].join('|')
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.win32;
var from = '' + conf.paths;
var to = '';
var delimIdx = from.indexOf('|');
if (delimIdx > -1) {
to = from.slice(delimIdx + 1);
from = from.slice(0, delimIdx);
}
// Force optimization before starting the benchmark
p.relative(from, to);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.relative)');
p.relative(from, to);
bench.start();
for (var i = 0; i < n; i++) {
p.relative(from, to);
}
bench.end(n);
}

33
benchmark/path/relative.js

@ -1,33 +0,0 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
type: ['win32', 'posix'],
n: [1e5],
});
function main(conf) {
var n = +conf.n;
var runTest = conf.type === 'win32' ? runWin32Test : runPosixTest;
// Force optimization before starting the benchmark
runTest();
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(path[conf.type].relative)');
runTest();
bench.start();
for (var i = 0; i < n; i++) {
runTest();
}
bench.end(n);
}
function runWin32Test() {
path.win32.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb');
}
function runPosixTest() {
path.posix.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
}

18
benchmark/path/resolve.js → benchmark/path/resolve-posix.js

@ -3,23 +3,29 @@ var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
type: ['win32', 'posix'],
n: [1e6],
paths: [
'',
['', ''].join('|'),
['foo/bar', '/tmp/file/', '..', 'a/../subfile'].join('|'),
['a/b/c/', '../../..'].join('|')
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path[conf.type];
var p = path.posix;
var args = ('' + conf.paths).split('|');
// Force optimization before starting the benchmark
p.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile');
p.resolve.apply(null, args);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.resolve)');
p.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile');
p.resolve.apply(null, args);
bench.start();
for (var i = 0; i < n; i++) {
p.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile');
p.resolve.apply(null, args);
}
bench.end(n);
}

31
benchmark/path/resolve-win32.js

@ -0,0 +1,31 @@
var common = require('../common.js');
var path = require('path');
var v8 = require('v8');
var bench = common.createBenchmark(main, {
paths: [
'',
['', ''].join('|'),
['c:/ignore', 'd:\\a/b\\c/d', '\\e.exe'].join('|'),
['c:/blah\\blah', 'd:/games', 'c:../a'].join('|')
],
n: [1e6]
});
function main(conf) {
var n = +conf.n;
var p = path.win32;
var args = ('' + conf.paths).split('|');
// Force optimization before starting the benchmark
p.resolve.apply(null, args);
v8.setFlagsFromString('--allow_natives_syntax');
eval('%OptimizeFunctionOnNextCall(p.resolve)');
p.resolve.apply(null, args);
bench.start();
for (var i = 0; i < n; i++) {
p.resolve.apply(null, args);
}
bench.end(n);
}
Loading…
Cancel
Save