diff --git a/benchmark/path/basename.js b/benchmark/path/basename.js new file mode 100644 index 0000000000..57d9492746 --- /dev/null +++ b/benchmark/path/basename.js @@ -0,0 +1,26 @@ +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.js new file mode 100644 index 0000000000..e95adf2881 --- /dev/null +++ b/benchmark/path/dirname.js @@ -0,0 +1,25 @@ +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.js b/benchmark/path/extname.js new file mode 100644 index 0000000000..c655ee7e3e --- /dev/null +++ b/benchmark/path/extname.js @@ -0,0 +1,26 @@ +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.js b/benchmark/path/format.js index 02fb691fe7..bc77f88811 100644 --- a/benchmark/path/format.js +++ b/benchmark/path/format.js @@ -1,5 +1,6 @@ var common = require('../common.js'); var path = require('path'); +var v8 = require('v8'); var bench = common.createBenchmark(main, { type: ['win32', 'posix'], @@ -23,6 +24,12 @@ function main(conf) { 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); diff --git a/benchmark/path/isAbsolute.js b/benchmark/path/isAbsolute.js index c9489fe85c..d4c79b99cd 100644 --- a/benchmark/path/isAbsolute.js +++ b/benchmark/path/isAbsolute.js @@ -1,5 +1,6 @@ var common = require('../common.js'); var path = require('path'); +var v8 = require('v8'); var bench = common.createBenchmark(main, { type: ['win32', 'posix'], @@ -13,6 +14,12 @@ function main(conf) { ? ['//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); diff --git a/benchmark/path/join.js b/benchmark/path/join.js index 54d02a6450..58f4dc3e1e 100644 --- a/benchmark/path/join.js +++ b/benchmark/path/join.js @@ -1,5 +1,6 @@ var common = require('../common.js'); var path = require('path'); +var v8 = require('v8'); var bench = common.createBenchmark(main, { type: ['win32', 'posix'], @@ -10,6 +11,12 @@ 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', '..'); diff --git a/benchmark/path/normalize.js b/benchmark/path/normalize.js index 10ca23037a..6f7f05e4f9 100644 --- a/benchmark/path/normalize.js +++ b/benchmark/path/normalize.js @@ -1,5 +1,6 @@ var common = require('../common.js'); var path = require('path'); +var v8 = require('v8'); var bench = common.createBenchmark(main, { type: ['win32', 'posix'], @@ -10,6 +11,12 @@ 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/..'); diff --git a/benchmark/path/parse.js b/benchmark/path/parse.js new file mode 100644 index 0000000000..f3fbb2a1f5 --- /dev/null +++ b/benchmark/path/parse.js @@ -0,0 +1,28 @@ +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.js b/benchmark/path/relative.js index 3e12f8b532..d61c3961a6 100644 --- a/benchmark/path/relative.js +++ b/benchmark/path/relative.js @@ -1,5 +1,6 @@ var common = require('../common.js'); var path = require('path'); +var v8 = require('v8'); var bench = common.createBenchmark(main, { type: ['win32', 'posix'], @@ -10,6 +11,12 @@ 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(); diff --git a/benchmark/path/resolve.js b/benchmark/path/resolve.js index ecf30f32fa..375e8b134b 100644 --- a/benchmark/path/resolve.js +++ b/benchmark/path/resolve.js @@ -1,5 +1,6 @@ var common = require('../common.js'); var path = require('path'); +var v8 = require('v8'); var bench = common.createBenchmark(main, { type: ['win32', 'posix'], @@ -10,6 +11,12 @@ 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');