Rich Trott | 4bb529d | 2016-02-20 01:03:16 | [diff] [blame^] | 1 | 'use strict'; |
Brian White | e1348b0 | 2016-02-06 03:23:29 | [diff] [blame] | 2 | var common = require('../common.js'); |
| 3 | var path = require('path'); |
| 4 | var v8 = require('v8'); |
| 5 | |
| 6 | var bench = common.createBenchmark(main, { |
| 7 | pathext: [ |
| 8 | '', |
| 9 | '/', |
| 10 | '/foo', |
| 11 | '/foo/.bar.baz', |
| 12 | ['/foo/.bar.baz', '.baz'].join('|'), |
| 13 | 'foo', |
| 14 | 'foo/bar.', |
| 15 | ['foo/bar.', '.'].join('|'), |
| 16 | '/foo/bar/baz/asdf/quux.html', |
| 17 | ['/foo/bar/baz/asdf/quux.html', '.html'].join('|') |
| 18 | ], |
| 19 | n: [1e6] |
| 20 | }); |
| 21 | |
| 22 | function main(conf) { |
| 23 | var n = +conf.n; |
| 24 | var p = path.posix; |
| 25 | var input = '' + conf.pathext; |
| 26 | var ext; |
| 27 | var extIdx = input.indexOf('|'); |
| 28 | if (extIdx !== -1) { |
| 29 | ext = input.slice(extIdx + 1); |
| 30 | input = input.slice(0, extIdx); |
| 31 | } |
| 32 | |
| 33 | // Force optimization before starting the benchmark |
| 34 | p.basename(input, ext); |
| 35 | v8.setFlagsFromString('--allow_natives_syntax'); |
| 36 | eval('%OptimizeFunctionOnNextCall(p.basename)'); |
| 37 | p.basename(input, ext); |
| 38 | |
| 39 | bench.start(); |
| 40 | for (var i = 0; i < n; i++) { |
| 41 | p.basename(input, ext); |
| 42 | } |
| 43 | bench.end(n); |
| 44 | } |