[test] Add performance test for closures.
Short living closures are very common in Node.js. This benchmark tracks progress as we move the optimizations that are currently only behind --mark_shared_functions_for_tier_up to the default settings. BUG=v8:5512 Review-Url: https://codereview.chromium.org/2525053002 Cr-Commit-Position: refs/heads/master@{#41246}
This commit is contained in:
parent
76fd6f25a9
commit
f277da2a00
43
test/js-perf-test/Closures/closures.js
Normal file
43
test/js-perf-test/Closures/closures.js
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
// Copyright 2015 the V8 project authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
new BenchmarkSuite('Closures', [1000], [
|
||||||
|
new Benchmark('ShortLivingClosures', false, false, 0,
|
||||||
|
ShortLivingClosures, ShortLivingClosuresSetup, ShortLivingClosuresTearDown)
|
||||||
|
]);
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// The pattern is this example is very common in Node.js.
|
||||||
|
var fs = {
|
||||||
|
readFile: function(filename, cb) {
|
||||||
|
cb(null, {length: 12});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function printLength (filename) {
|
||||||
|
fs.readFile(filename, foo);
|
||||||
|
|
||||||
|
function foo (err, buf) {
|
||||||
|
if (err) return;
|
||||||
|
for (var j = 0; j<1000; j++) {
|
||||||
|
// Do some work to make the optimization actually worth while
|
||||||
|
buf.length++;
|
||||||
|
}
|
||||||
|
return (buf.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function ShortLivingClosuresSetup() {}
|
||||||
|
|
||||||
|
function ShortLivingClosures() {
|
||||||
|
result = printLength('foo_bar.js');
|
||||||
|
}
|
||||||
|
|
||||||
|
function ShortLivingClosuresTearDown() {
|
||||||
|
return result == 1012;
|
||||||
|
}
|
26
test/js-perf-test/Closures/run.js
Normal file
26
test/js-perf-test/Closures/run.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
// Copyright 2015 the V8 project authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
|
||||||
|
load('../base.js');
|
||||||
|
load('closures.js');
|
||||||
|
|
||||||
|
var success = true;
|
||||||
|
|
||||||
|
function PrintResult(name, result) {
|
||||||
|
print(name + '-Closures(Score): ' + result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function PrintError(name, error) {
|
||||||
|
PrintResult(name, error);
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BenchmarkSuite.config.doWarmup = undefined;
|
||||||
|
BenchmarkSuite.config.doDeterministic = undefined;
|
||||||
|
|
||||||
|
BenchmarkSuite.RunSuites({ NotifyResult: PrintResult,
|
||||||
|
NotifyError: PrintError });
|
@ -75,6 +75,28 @@
|
|||||||
{"name": "DefaultConstructor"}
|
{"name": "DefaultConstructor"}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "Closures",
|
||||||
|
"path": ["Closures"],
|
||||||
|
"main": "run.js",
|
||||||
|
"resources": ["closures.js"],
|
||||||
|
"flags": [],
|
||||||
|
"results_regexp": "^Closures\\-Closures\\(Score\\): (.+)$",
|
||||||
|
"tests": [
|
||||||
|
{"name": "Closures"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Closures",
|
||||||
|
"path": ["Closures"],
|
||||||
|
"main": "run.js",
|
||||||
|
"resources": ["closures.js"],
|
||||||
|
"flags": ["--mark_shared_functions_for_tier_up"],
|
||||||
|
"results_regexp": "^Closures\\-Closures\\(Score\\): (.+)$",
|
||||||
|
"tests": [
|
||||||
|
{"name": "Closures"}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Collections",
|
"name": "Collections",
|
||||||
"path": ["Collections"],
|
"path": ["Collections"],
|
||||||
|
Loading…
Reference in New Issue
Block a user