blob: 64da9017793440474a86caca8cd41fab3fab70ab [file] [log] [blame]
Rich Trott4bb529d2016-02-20 01:03:161'use strict';
Brian Whitee1348b02016-02-06 03:23:292var common = require('../common.js');
3var path = require('path');
4var v8 = require('v8');
5
6var 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
22function 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}