[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": "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",
|
||||
"path": ["Collections"],
|
||||
|
Loading…
Reference in New Issue
Block a user