[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:
franzih 2016-11-24 00:07:54 -08:00 committed by Commit bot
parent 76fd6f25a9
commit f277da2a00
3 changed files with 91 additions and 0 deletions

View 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;
}

View 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 });

View File

@ -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"],