Skip to content

Commit f48763c

Browse files
bzozitaloacasas
authored andcommitted
benchmark: remove benchmarks forced optimizations
Removes all instances of %OptimizeFunctionOnNextCall from benchmarks Refs: #9615 Refs: #11720
1 parent ca31986 commit f48763c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+38
-318
lines changed

benchmark/README.md

-9
Original file line numberDiff line numberDiff line change
@@ -235,12 +235,3 @@ it returns to accomplish what they need. This function reports timing
235235
data to the parent process (usually created by running `compare.js`, `run.js` or
236236
`scatter.js`).
237237

238-
### v8ForceOptimization(method[, ...args])
239-
240-
Force V8 to mark the `method` for optimization with the native function
241-
`%OptimizeFunctionOnNextCall()` and return the optimization status
242-
after that.
243-
244-
It can be used to prevent the benchmark from getting disrupted by the optimizer
245-
kicking in halfway through. However, this could result in a less effective
246-
optimization. In general, only use it if you know what it actually does.

benchmark/buffers/buffer-compare-instance-method.js

-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use strict';
22
const common = require('../common.js');
3-
const v8 = require('v8');
43

54
const bench = common.createBenchmark(main, {
65
size: [16, 512, 1024, 4096, 16386],
@@ -20,7 +19,6 @@ function main(conf) {
2019

2120
b1[size - 1] = 'b'.charCodeAt(0);
2221

23-
// Force optimization before starting the benchmark
2422
switch (args) {
2523
case 2:
2624
b0.compare(b1, 0);
@@ -37,8 +35,6 @@ function main(conf) {
3735
default:
3836
b0.compare(b1);
3937
}
40-
v8.setFlagsFromString('--allow_natives_syntax');
41-
eval('%OptimizeFunctionOnNextCall(b0.compare)');
4238
switch (args) {
4339
case 2:
4440
b0.compare(b1, 0);

benchmark/buffers/buffer-compare-offset.js

-23
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use strict';
22
const common = require('../common.js');
3-
const v8 = require('v8');
43

54
const bench = common.createBenchmark(main, {
65
method: ['offset', 'slice'],
@@ -9,18 +8,6 @@ const bench = common.createBenchmark(main, {
98
});
109

1110
function compareUsingSlice(b0, b1, len, iter) {
12-
13-
// Force optimization before starting the benchmark
14-
Buffer.compare(b0.slice(1, len), b1.slice(1, len));
15-
v8.setFlagsFromString('--allow_natives_syntax');
16-
eval('%OptimizeFunctionOnNextCall(Buffer.compare)');
17-
eval('%OptimizeFunctionOnNextCall(b0.slice)');
18-
eval('%OptimizeFunctionOnNextCall(b1.slice)');
19-
Buffer.compare(b0.slice(1, len), b1.slice(1, len));
20-
doCompareUsingSlice(b0, b1, len, iter);
21-
}
22-
23-
function doCompareUsingSlice(b0, b1, len, iter) {
2411
var i;
2512
bench.start();
2613
for (i = 0; i < iter; i++)
@@ -29,16 +16,6 @@ function doCompareUsingSlice(b0, b1, len, iter) {
2916
}
3017

3118
function compareUsingOffset(b0, b1, len, iter) {
32-
len = len + 1;
33-
// Force optimization before starting the benchmark
34-
b0.compare(b1, 1, len, 1, len);
35-
v8.setFlagsFromString('--allow_natives_syntax');
36-
eval('%OptimizeFunctionOnNextCall(b0.compare)');
37-
b0.compare(b1, 1, len, 1, len);
38-
doCompareUsingOffset(b0, b1, len, iter);
39-
}
40-
41-
function doCompareUsingOffset(b0, b1, len, iter) {
4219
var i;
4320
bench.start();
4421
for (i = 0; i < iter; i++)

benchmark/buffers/buffer-swap.js

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
'use strict';
22

33
const common = require('../common.js');
4-
const v8 = require('v8');
54

65
const bench = common.createBenchmark(main, {
76
aligned: ['true', 'false'],
@@ -81,9 +80,7 @@ function main(conf) {
8180
const buf = createBuffer(len, aligned === 'true');
8281
const bufferSwap = genMethod(method);
8382

84-
v8.setFlagsFromString('--allow_natives_syntax');
85-
eval('%OptimizeFunctionOnNextCall(bufferSwap)');
86-
83+
bufferSwap(n, buf);
8784
bench.start();
8885
bufferSwap(n, buf);
8986
bench.end(n);

benchmark/common.js

-14
Original file line numberDiff line numberDiff line change
@@ -229,17 +229,3 @@ Benchmark.prototype.report = function(rate, elapsed) {
229229
type: 'report'
230230
});
231231
};
232-
233-
exports.v8ForceOptimization = function(method) {
234-
if (typeof method !== 'function')
235-
return;
236-
237-
const v8 = require('v8');
238-
v8.setFlagsFromString('--allow_natives_syntax');
239-
240-
const args = Array.prototype.slice.call(arguments, 1);
241-
method.apply(null, args);
242-
eval('%OptimizeFunctionOnNextCall(method)');
243-
method.apply(null, args);
244-
return eval('%GetOptimizationStatus(method)');
245-
};

benchmark/crypto/get-ciphers.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ function main(conf) {
1212
const v = conf.v;
1313
const method = require(v).getCiphers;
1414
var i = 0;
15-
16-
common.v8ForceOptimization(method);
15+
// first call to getChipers will dominate the results
16+
if (n > 1) {
17+
for (; i < n; i++)
18+
method();
19+
}
1720
bench.start();
18-
for (; i < n; i++) method();
21+
for (i = 0; i < n; i++) method();
1922
bench.end(n);
2023
}

benchmark/es/defaultparams-bench.js

-4
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ function defaultParams(x = 1, y = 2) {
2222

2323
function runOldStyleDefaults(n) {
2424

25-
common.v8ForceOptimization(oldStyleDefaults);
26-
2725
var i = 0;
2826
bench.start();
2927
for (; i < n; i++)
@@ -33,8 +31,6 @@ function runOldStyleDefaults(n) {
3331

3432
function runDefaultParams(n) {
3533

36-
common.v8ForceOptimization(defaultParams);
37-
3834
var i = 0;
3935
bench.start();
4036
for (; i < n; i++)

benchmark/es/restparams-bench.js

-6
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ function useArguments() {
3535

3636
function runCopyArguments(n) {
3737

38-
common.v8ForceOptimization(copyArguments, 1, 2, 'a', 'b');
39-
4038
var i = 0;
4139
bench.start();
4240
for (; i < n; i++)
@@ -46,8 +44,6 @@ function runCopyArguments(n) {
4644

4745
function runRestArguments(n) {
4846

49-
common.v8ForceOptimization(restArguments, 1, 2, 'a', 'b');
50-
5147
var i = 0;
5248
bench.start();
5349
for (; i < n; i++)
@@ -57,8 +53,6 @@ function runRestArguments(n) {
5753

5854
function runUseArguments(n) {
5955

60-
common.v8ForceOptimization(useArguments, 1, 2, 'a', 'b');
61-
6256
var i = 0;
6357
bench.start();
6458
for (; i < n; i++)

benchmark/misc/console.js

-13
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ const common = require('../common.js');
44
const assert = require('assert');
55
const Writable = require('stream').Writable;
66
const util = require('util');
7-
const v8 = require('v8');
8-
9-
v8.setFlagsFromString('--allow_natives_syntax');
107

118
const methods = [
129
'restAndSpread',
@@ -51,14 +48,7 @@ function usingArgumentsAndApplyC() {
5148
nullStream.write(util.format.apply(null, arguments) + '\n');
5249
}
5350

54-
function optimize(method, ...args) {
55-
method(...args);
56-
eval(`%OptimizeFunctionOnNextCall(${method.name})`);
57-
method(...args);
58-
}
59-
6051
function runUsingRestAndConcat(n) {
61-
optimize(usingRestAndConcat, 'a', 1);
6252

6353
var i = 0;
6454
bench.start();
@@ -70,7 +60,6 @@ function runUsingRestAndConcat(n) {
7060
function runUsingRestAndSpread(n, concat) {
7161

7262
const method = concat ? usingRestAndSpreadC : usingRestAndSpreadTS;
73-
optimize(method, 'this is %s of %d', 'a', 1);
7463

7564
var i = 0;
7665
bench.start();
@@ -82,7 +71,6 @@ function runUsingRestAndSpread(n, concat) {
8271
function runUsingRestAndApply(n, concat) {
8372

8473
const method = concat ? usingRestAndApplyC : usingRestAndApplyTS;
85-
optimize(method, 'this is %s of %d', 'a', 1);
8674

8775
var i = 0;
8876
bench.start();
@@ -94,7 +82,6 @@ function runUsingRestAndApply(n, concat) {
9482
function runUsingArgumentsAndApply(n, concat) {
9583

9684
const method = concat ? usingArgumentsAndApplyC : usingArgumentsAndApplyTS;
97-
optimize(method, 'this is %s of %d', 'a', 1);
9885

9986
var i = 0;
10087
bench.start();

benchmark/misc/punycode.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,16 @@ function usingICU(val) {
4242
}
4343

4444
function runPunycode(n, val) {
45-
common.v8ForceOptimization(usingPunycode, val);
4645
var i = 0;
47-
bench.start();
4846
for (; i < n; i++)
4947
usingPunycode(val);
48+
bench.start();
49+
for (i = 0; i < n; i++)
50+
usingPunycode(val);
5051
bench.end(n);
5152
}
5253

5354
function runICU(n, val) {
54-
common.v8ForceOptimization(usingICU, val);
5555
var i = 0;
5656
bench.start();
5757
for (; i < n; i++)

benchmark/misc/util-extend-vs-object-assign.js

-8
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
const common = require('../common.js');
44
const util = require('util');
5-
const v8 = require('v8');
65

76
const bench = common.createBenchmark(main, {
87
type: ['extend', 'assign'],
@@ -12,25 +11,18 @@ const bench = common.createBenchmark(main, {
1211
function main(conf) {
1312
let fn;
1413
const n = conf.n | 0;
15-
let v8command;
1614

1715
if (conf.type === 'extend') {
1816
fn = util._extend;
19-
v8command = '%OptimizeFunctionOnNextCall(util._extend)';
2017
} else if (conf.type === 'assign') {
2118
fn = Object.assign;
22-
// Object.assign is built-in, cannot be optimized
23-
v8command = '';
2419
}
2520

2621
// Force-optimize the method to test so that the benchmark doesn't
2722
// get disrupted by the optimizer kicking in halfway through.
2823
for (var i = 0; i < conf.type.length * 10; i += 1)
2924
fn({}, process.env);
3025

31-
v8.setFlagsFromString('--allow_natives_syntax');
32-
eval(v8command);
33-
3426
var obj = new Proxy({}, { set: function(a, b, c) { return true; } });
3527

3628
bench.start();

benchmark/path/basename-posix.js

-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
'use strict';
22
var common = require('../common.js');
33
var path = require('path');
4-
var v8 = require('v8');
54

65
var bench = common.createBenchmark(main, {
76
pathext: [
@@ -30,12 +29,6 @@ function main(conf) {
3029
input = input.slice(0, extIdx);
3130
}
3231

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-
3932
bench.start();
4033
for (var i = 0; i < n; i++) {
4134
p.basename(input, ext);

benchmark/path/basename-win32.js

-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
'use strict';
22
var common = require('../common.js');
33
var path = require('path');
4-
var v8 = require('v8');
54

65
var bench = common.createBenchmark(main, {
76
pathext: [
@@ -30,12 +29,6 @@ function main(conf) {
3029
input = input.slice(0, extIdx);
3130
}
3231

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-
3932
bench.start();
4033
for (var i = 0; i < n; i++) {
4134
p.basename(input, ext);

benchmark/path/dirname-posix.js

-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
'use strict';
22
var common = require('../common.js');
33
var path = require('path');
4-
var v8 = require('v8');
54

65
var bench = common.createBenchmark(main, {
76
path: [
@@ -21,12 +20,6 @@ function main(conf) {
2120
var p = path.posix;
2221
var input = '' + conf.path;
2322

24-
// Force optimization before starting the benchmark
25-
p.dirname(input);
26-
v8.setFlagsFromString('--allow_natives_syntax');
27-
eval('%OptimizeFunctionOnNextCall(p.dirname)');
28-
p.dirname(input);
29-
3023
bench.start();
3124
for (var i = 0; i < n; i++) {
3225
p.dirname(input);

benchmark/path/dirname-win32.js

-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
'use strict';
22
var common = require('../common.js');
33
var path = require('path');
4-
var v8 = require('v8');
54

65
var bench = common.createBenchmark(main, {
76
path: [
@@ -21,12 +20,6 @@ function main(conf) {
2120
var p = path.win32;
2221
var input = '' + conf.path;
2322

24-
// Force optimization before starting the benchmark
25-
p.dirname(input);
26-
v8.setFlagsFromString('--allow_natives_syntax');
27-
eval('%OptimizeFunctionOnNextCall(p.dirname)');
28-
p.dirname(input);
29-
3023
bench.start();
3124
for (var i = 0; i < n; i++) {
3225
p.dirname(input);

benchmark/path/extname-posix.js

-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
'use strict';
22
var common = require('../common.js');
33
var path = require('path');
4-
var v8 = require('v8');
54

65
var bench = common.createBenchmark(main, {
76
path: [
@@ -24,12 +23,6 @@ function main(conf) {
2423
var p = path.posix;
2524
var input = '' + conf.path;
2625

27-
// Force optimization before starting the benchmark
28-
p.extname(input);
29-
v8.setFlagsFromString('--allow_natives_syntax');
30-
eval('%OptimizeFunctionOnNextCall(p.extname)');
31-
p.extname(input);
32-
3326
bench.start();
3427
for (var i = 0; i < n; i++) {
3528
p.extname(input);

0 commit comments

Comments
 (0)