From e1348b0819d4d2aeb9a93c98dd31b9cacd951214 Mon Sep 17 00:00:00 2001 From: Brian White Date: Fri, 5 Feb 2016 22:23:29 -0500 Subject: 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 Reviewed-By: James M Snell --- benchmark/path/basename-posix.js | 43 ++++++++++++++++++++++++++++++++++++++ benchmark/path/basename-win32.js | 43 ++++++++++++++++++++++++++++++++++++++ benchmark/path/basename.js | 26 ----------------------- benchmark/path/dirname-posix.js | 34 ++++++++++++++++++++++++++++++ benchmark/path/dirname-win32.js | 34 ++++++++++++++++++++++++++++++ benchmark/path/dirname.js | 25 ---------------------- benchmark/path/extname-posix.js | 37 ++++++++++++++++++++++++++++++++ benchmark/path/extname-win32.js | 37 ++++++++++++++++++++++++++++++++ benchmark/path/extname.js | 26 ----------------------- benchmark/path/format-posix.js | 35 +++++++++++++++++++++++++++++++ benchmark/path/format-win32.js | 35 +++++++++++++++++++++++++++++++ benchmark/path/format.js | 38 --------------------------------- benchmark/path/isAbsolute-posix.js | 32 ++++++++++++++++++++++++++++ benchmark/path/isAbsolute-win32.js | 33 +++++++++++++++++++++++++++++ benchmark/path/isAbsolute.js | 34 ------------------------------ benchmark/path/join-posix.js | 28 +++++++++++++++++++++++++ benchmark/path/join-win32.js | 28 +++++++++++++++++++++++++ benchmark/path/join.js | 25 ---------------------- benchmark/path/makeLong-win32.js | 31 +++++++++++++++++++++++++++ benchmark/path/normalize-posix.js | 33 +++++++++++++++++++++++++++++ benchmark/path/normalize-win32.js | 33 +++++++++++++++++++++++++++++ benchmark/path/normalize.js | 25 ---------------------- benchmark/path/parse-posix.js | 34 ++++++++++++++++++++++++++++++ benchmark/path/parse-win32.js | 35 +++++++++++++++++++++++++++++++ benchmark/path/parse.js | 28 ------------------------- benchmark/path/relative-posix.js | 40 +++++++++++++++++++++++++++++++++++ benchmark/path/relative-win32.js | 38 +++++++++++++++++++++++++++++++++ benchmark/path/relative.js | 33 ----------------------------- benchmark/path/resolve-posix.js | 31 +++++++++++++++++++++++++++ benchmark/path/resolve-win32.js | 31 +++++++++++++++++++++++++++ benchmark/path/resolve.js | 25 ---------------------- 31 files changed, 725 insertions(+), 285 deletions(-) create mode 100644 benchmark/path/basename-posix.js create mode 100644 benchmark/path/basename-win32.js delete mode 100644 benchmark/path/basename.js create mode 100644 benchmark/path/dirname-posix.js create mode 100644 benchmark/path/dirname-win32.js delete mode 100644 benchmark/path/dirname.js create mode 100644 benchmark/path/extname-posix.js create mode 100644 benchmark/path/extname-win32.js delete mode 100644 benchmark/path/extname.js create mode 100644 benchmark/path/format-posix.js create mode 100644 benchmark/path/format-win32.js delete mode 100644 benchmark/path/format.js create mode 100644 benchmark/path/isAbsolute-posix.js create mode 100644 benchmark/path/isAbsolute-win32.js delete mode 100644 benchmark/path/isAbsolute.js create mode 100644 benchmark/path/join-posix.js create mode 100644 benchmark/path/join-win32.js delete mode 100644 benchmark/path/join.js create mode 100644 benchmark/path/makeLong-win32.js create mode 100644 benchmark/path/normalize-posix.js create mode 100644 benchmark/path/normalize-win32.js delete mode 100644 benchmark/path/normalize.js create mode 100644 benchmark/path/parse-posix.js create mode 100644 benchmark/path/parse-win32.js delete mode 100644 benchmark/path/parse.js create mode 100644 benchmark/path/relative-posix.js create mode 100644 benchmark/path/relative-win32.js delete mode 100644 benchmark/path/relative.js create mode 100644 benchmark/path/resolve-posix.js create mode 100644 benchmark/path/resolve-win32.js delete mode 100644 benchmark/path/resolve.js (limited to 'benchmark/path') 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-posix.js b/benchmark/path/dirname-posix.js new file mode 100644 index 0000000000..037ac63670 --- /dev/null +++ b/benchmark/path/dirname-posix.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', + '/foo/bar', + 'foo', + 'foo/bar', + '/foo/bar/baz/asdf/quux' + ], + n: [1e6] +}); + +function main(conf) { + var n = +conf.n; + var p = path.posix; + 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/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/dirname.js b/benchmark/path/dirname.js deleted file mode 100644 index e95adf2881..0000000000 --- a/benchmark/path/dirname.js +++ /dev/null @@ -1,25 +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.dirname('/foo/bar/baz/asdf/quux'); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.dirname)'); - p.dirname('/foo/bar/baz/asdf/quux'); - - bench.start(); - for (var i = 0; i < n; i++) { - p.dirname('/foo/bar/baz/asdf/quux'); - } - 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/extname.js b/benchmark/path/extname.js deleted file mode 100644 index c655ee7e3e..0000000000 --- a/benchmark/path/extname.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.extname('index.html'); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.extname)'); - p.extname('index.html'); - - bench.start(); - for (var i = 0; i < n; i++) { - p.extname('index.html'); - p.extname('index'); - } - bench.end(n); -} diff --git a/benchmark/path/format-posix.js b/benchmark/path/format-posix.js new file mode 100644 index 0000000000..6dce6d3fae --- /dev/null +++ b/benchmark/path/format-posix.js @@ -0,0 +1,35 @@ +var common = require('../common.js'); +var path = require('path'); +var v8 = require('v8'); + +var bench = common.createBenchmark(main, { + props: [ + ['/', '/home/user/dir', 'index.html', '.html', 'index'].join('|') + ], + n: [1e7] +}); + +function main(conf) { + var n = +conf.n; + 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(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/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/format.js b/benchmark/path/format.js deleted file mode 100644 index bc77f88811..0000000000 --- a/benchmark/path/format.js +++ /dev/null @@ -1,38 +0,0 @@ -var common = require('../common.js'); -var path = require('path'); -var v8 = require('v8'); - -var bench = common.createBenchmark(main, { - type: ['win32', 'posix'], - 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' - }; - - // Force optimization before starting the benchmark - p.format(test); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.format)'); - p.format(test); - - bench.start(); - for (var i = 0; i < n; i++) { - p.format(test); - } - bench.end(n); -} diff --git a/benchmark/path/isAbsolute-posix.js b/benchmark/path/isAbsolute-posix.js new file mode 100644 index 0000000000..4f8d89e654 --- /dev/null +++ b/benchmark/path/isAbsolute-posix.js @@ -0,0 +1,32 @@ +var common = require('../common.js'); +var path = require('path'); +var v8 = require('v8'); + +var bench = common.createBenchmark(main, { + path: [ + '', + '.', + '/foo/bar', + '/baz/..', + 'bar/baz' + ], + n: [1e6] +}); + +function main(conf) { + var n = +conf.n; + var p = path.posix; + 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-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-posix.js b/benchmark/path/join-posix.js new file mode 100644 index 0000000000..4b8bb924a2 --- /dev/null +++ b/benchmark/path/join-posix.js @@ -0,0 +1,28 @@ +var common = require('../common.js'); +var path = require('path'); +var v8 = require('v8'); + +var bench = common.createBenchmark(main, { + paths: [ + ['/foo', 'bar', '', 'baz/asdf', 'quux', '..'].join('|') + ], + n: [1e6] +}); + +function main(conf) { + var n = +conf.n; + var p = path.posix; + 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/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/join.js b/benchmark/path/join.js deleted file mode 100644 index 58f4dc3e1e..0000000000 --- a/benchmark/path/join.js +++ /dev/null @@ -1,25 +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.join('/foo', 'bar', '', 'baz/asdf', 'quux', '..'); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.join)'); - p.join('/foo', 'bar', '', 'baz/asdf', 'quux', '..'); - - bench.start(); - for (var i = 0; i < n; i++) { - p.join('/foo', 'bar', '', 'baz/asdf', 'quux', '..'); - } - 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-posix.js b/benchmark/path/normalize-posix.js new file mode 100644 index 0000000000..87cf903b8c --- /dev/null +++ b/benchmark/path/normalize-posix.js @@ -0,0 +1,33 @@ +var common = require('../common.js'); +var path = require('path'); +var v8 = require('v8'); + +var bench = common.createBenchmark(main, { + path: [ + '', + '.', + '/../', + '/foo', + '/foo/bar', + '/foo/bar//baz/asdf/quux/..' + ], + n: [1e6] +}); + +function main(conf) { + var n = +conf.n; + var p = path.posix; + 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/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/normalize.js b/benchmark/path/normalize.js deleted file mode 100644 index 6f7f05e4f9..0000000000 --- a/benchmark/path/normalize.js +++ /dev/null @@ -1,25 +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.normalize('/foo/bar//baz/asdf/quux/..'); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.normalize)'); - p.normalize('/foo/bar//baz/asdf/quux/..'); - - bench.start(); - for (var i = 0; i < n; i++) { - p.normalize('/foo/bar//baz/asdf/quux/..'); - } - bench.end(n); -} diff --git a/benchmark/path/parse-posix.js b/benchmark/path/parse-posix.js new file mode 100644 index 0000000000..97d84e5275 --- /dev/null +++ b/benchmark/path/parse-posix.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', + '/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.posix; + 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/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/parse.js b/benchmark/path/parse.js deleted file mode 100644 index f3fbb2a1f5..0000000000 --- a/benchmark/path/parse.js +++ /dev/null @@ -1,28 +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 test = conf.type === 'win32' - ? 'C:\\path\\dir\\index.html' - : '/home/user/dir/index.html'; - - // Force optimization before starting the benchmark - p.parse(test); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.parse)'); - p.parse(test); - - bench.start(); - for (var i = 0; i < n; i++) { - p.parse(test); - } - 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-posix.js b/benchmark/path/resolve-posix.js new file mode 100644 index 0000000000..0f0554d6fe --- /dev/null +++ b/benchmark/path/resolve-posix.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('|'), + ['foo/bar', '/tmp/file/', '..', 'a/../subfile'].join('|'), + ['a/b/c/', '../../..'].join('|') + ], + n: [1e6] +}); + +function main(conf) { + var n = +conf.n; + var p = path.posix; + 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); +} 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); +} diff --git a/benchmark/path/resolve.js b/benchmark/path/resolve.js deleted file mode 100644 index 375e8b134b..0000000000 --- a/benchmark/path/resolve.js +++ /dev/null @@ -1,25 +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.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile'); - v8.setFlagsFromString('--allow_natives_syntax'); - eval('%OptimizeFunctionOnNextCall(p.resolve)'); - p.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile'); - - bench.start(); - for (var i = 0; i < n; i++) { - p.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile'); - } - bench.end(n); -} -- cgit v1.2.3