summaryrefslogtreecommitdiff
path: root/benchmark/path
diff options
context:
space:
mode:
authorBrian White <mscdex@mscdex.net>2016-02-05 22:23:29 -0500
committerJames M Snell <jasnell@gmail.com>2016-02-09 20:35:35 -0800
commite1348b0819d4d2aeb9a93c98dd31b9cacd951214 (patch)
treed39cf96374c5f9dcc9d5f6da25072f3768a1e80c /benchmark/path
parent72d0f8821530bc77a369914c285a45991b2bf465 (diff)
downloadandroid-node-v8-e1348b0819d4d2aeb9a93c98dd31b9cacd951214.tar.gz
android-node-v8-e1348b0819d4d2aeb9a93c98dd31b9cacd951214.tar.bz2
android-node-v8-e1348b0819d4d2aeb9a93c98dd31b9cacd951214.zip
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>
Diffstat (limited to 'benchmark/path')
-rw-r--r--benchmark/path/basename-posix.js43
-rw-r--r--benchmark/path/basename-win32.js43
-rw-r--r--benchmark/path/basename.js26
-rw-r--r--benchmark/path/dirname-posix.js (renamed from benchmark/path/dirname.js)21
-rw-r--r--benchmark/path/dirname-win32.js34
-rw-r--r--benchmark/path/extname-posix.js37
-rw-r--r--benchmark/path/extname-win32.js37
-rw-r--r--benchmark/path/format-posix.js (renamed from benchmark/path/format.js)33
-rw-r--r--benchmark/path/format-win32.js35
-rw-r--r--benchmark/path/isAbsolute-posix.js (renamed from benchmark/path/extname.js)22
-rw-r--r--benchmark/path/isAbsolute-win32.js33
-rw-r--r--benchmark/path/isAbsolute.js34
-rw-r--r--benchmark/path/join-posix.js (renamed from benchmark/path/join.js)15
-rw-r--r--benchmark/path/join-win32.js28
-rw-r--r--benchmark/path/makeLong-win32.js31
-rw-r--r--benchmark/path/normalize-posix.js (renamed from benchmark/path/normalize.js)20
-rw-r--r--benchmark/path/normalize-win32.js33
-rw-r--r--benchmark/path/parse-posix.js (renamed from benchmark/path/parse.js)24
-rw-r--r--benchmark/path/parse-win32.js35
-rw-r--r--benchmark/path/relative-posix.js40
-rw-r--r--benchmark/path/relative-win32.js38
-rw-r--r--benchmark/path/relative.js33
-rw-r--r--benchmark/path/resolve-posix.js (renamed from benchmark/path/resolve.js)18
-rw-r--r--benchmark/path/resolve-win32.js31
24 files changed, 592 insertions, 152 deletions
diff --git a/benchmark/path/basename-posix.js b/benchmark/path/basename-posix.js
new file mode 100644
index 0000000000..d4ea072b57
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/basename-win32.js b/benchmark/path/basename-win32.js
new file mode 100644
index 0000000000..08938a2050
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/basename.js b/benchmark/path/basename.js
deleted file mode 100644
index 57d9492746..0000000000
--- a/benchmark/path/basename.js
+++ /dev/null
@@ -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);
-}
diff --git a/benchmark/path/dirname.js b/benchmark/path/dirname-posix.js
index e95adf2881..037ac63670 100644
--- a/benchmark/path/dirname.js
+++ b/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);
}
diff --git a/benchmark/path/dirname-win32.js b/benchmark/path/dirname-win32.js
new file mode 100644
index 0000000000..cd8c190e97
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/extname-posix.js b/benchmark/path/extname-posix.js
new file mode 100644
index 0000000000..41a4a77883
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/extname-win32.js b/benchmark/path/extname-win32.js
new file mode 100644
index 0000000000..fcc1af9337
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/format.js b/benchmark/path/format-posix.js
index bc77f88811..6dce6d3fae 100644
--- a/benchmark/path/format.js
+++ b/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);
}
diff --git a/benchmark/path/format-win32.js b/benchmark/path/format-win32.js
new file mode 100644
index 0000000000..598393b836
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/extname.js b/benchmark/path/isAbsolute-posix.js
index c655ee7e3e..4f8d89e654 100644
--- a/benchmark/path/extname.js
+++ b/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);
}
diff --git a/benchmark/path/isAbsolute-win32.js b/benchmark/path/isAbsolute-win32.js
new file mode 100644
index 0000000000..c6771a0e7d
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/isAbsolute.js b/benchmark/path/isAbsolute.js
deleted file mode 100644
index d4c79b99cd..0000000000
--- a/benchmark/path/isAbsolute.js
+++ /dev/null
@@ -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]);
- }
-}
diff --git a/benchmark/path/join.js b/benchmark/path/join-posix.js
index 58f4dc3e1e..4b8bb924a2 100644
--- a/benchmark/path/join.js
+++ b/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);
}
diff --git a/benchmark/path/join-win32.js b/benchmark/path/join-win32.js
new file mode 100644
index 0000000000..7309d1f91c
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/makeLong-win32.js b/benchmark/path/makeLong-win32.js
new file mode 100644
index 0000000000..c0b0ac124e
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/normalize.js b/benchmark/path/normalize-posix.js
index 6f7f05e4f9..87cf903b8c 100644
--- a/benchmark/path/normalize.js
+++ b/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);
}
diff --git a/benchmark/path/normalize-win32.js b/benchmark/path/normalize-win32.js
new file mode 100644
index 0000000000..50f1e759f7
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/parse.js b/benchmark/path/parse-posix.js
index f3fbb2a1f5..97d84e5275 100644
--- a/benchmark/path/parse.js
+++ b/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);
}
diff --git a/benchmark/path/parse-win32.js b/benchmark/path/parse-win32.js
new file mode 100644
index 0000000000..7746a10b79
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/relative-posix.js b/benchmark/path/relative-posix.js
new file mode 100644
index 0000000000..59058babaf
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/relative-win32.js b/benchmark/path/relative-win32.js
new file mode 100644
index 0000000000..f3eab74d26
--- /dev/null
+++ b/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);
+}
diff --git a/benchmark/path/relative.js b/benchmark/path/relative.js
deleted file mode 100644
index d61c3961a6..0000000000
--- a/benchmark/path/relative.js
+++ /dev/null
@@ -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');
-}
diff --git a/benchmark/path/resolve.js b/benchmark/path/resolve-posix.js
index 375e8b134b..0f0554d6fe 100644
--- a/benchmark/path/resolve.js
+++ b/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);
}
diff --git a/benchmark/path/resolve-win32.js b/benchmark/path/resolve-win32.js
new file mode 100644
index 0000000000..8a5502288f
--- /dev/null
+++ b/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);
+}