For Micro-benchmarks for 'with'
R=arv@chromium.org, mstarzinger@chromium.org BUG=v8:4131 LOG=n Review URL: https://codereview.chromium.org/1153363002 Cr-Commit-Position: refs/heads/master@{#28714}
This commit is contained in:
parent
861c427420
commit
f62d5ce912
@ -106,6 +106,16 @@
|
||||
"tests": [
|
||||
{"name": "Assign"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Scope",
|
||||
"path": ["Scope"],
|
||||
"main": "run.js",
|
||||
"resources": ["with.js"],
|
||||
"results_regexp": "^%s\\-Scope\\(Score\\): (.+)$",
|
||||
"tests": [
|
||||
{"name": "With"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
26
test/js-perf-test/Scope/run.js
Normal file
26
test/js-perf-test/Scope/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('with.js');
|
||||
|
||||
var success = true;
|
||||
|
||||
function PrintResult(name, result) {
|
||||
print(name + '-Scope(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 });
|
90
test/js-perf-test/Scope/with.js
Normal file
90
test/js-perf-test/Scope/with.js
Normal file
@ -0,0 +1,90 @@
|
||||
// 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( 'With', [1000], [
|
||||
new Benchmark('AccessOnSameLevel', false, false, 0,
|
||||
AccessOnSameLevel, AccessOnSameLevelSetup,
|
||||
AccessOnSameLevelTearDown),
|
||||
new Benchmark('SetOnSameLevel', false, false, 0,
|
||||
SetOnSameLevel, SetOnSameLevelSetup,
|
||||
SetOnSameLevelTearDown),
|
||||
new Benchmark('AccessOverPrototypeChain', false, false, 0,
|
||||
AccessOverPrototypeChainSetup, AccessOverPrototypeChainSetup,
|
||||
AccessOverPrototypeChainTearDown),
|
||||
new Benchmark('CompetingScope', false, false, 0,
|
||||
CompetingScope, CompetingScopeSetup, CompetingScopeTearDown)
|
||||
]);
|
||||
|
||||
var objectUnderTest;
|
||||
var objectUnderTestExtended;
|
||||
var resultStore;
|
||||
var VALUE_OF_PROPERTY = 'Simply a string';
|
||||
var SOME_OTHER_VALUE = 'Another value';
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
function AccessOnSameLevelSetup() {
|
||||
objectUnderTest = {first: VALUE_OF_PROPERTY};
|
||||
}
|
||||
|
||||
function AccessOnSameLevel() {
|
||||
with (objectUnderTest) {
|
||||
resultStore = first;
|
||||
}
|
||||
}
|
||||
|
||||
function AccessOnSameLevelTearDown() {
|
||||
return objectUnderTest.first === resultStore;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
function AccessOverPrototypeChainSetup() {
|
||||
objectUnderTest = {first: VALUE_OF_PROPERTY};
|
||||
objectUnderTestExtended = Object.create(objectUnderTest);
|
||||
objectUnderTestExtended.second = 'Another string';
|
||||
}
|
||||
|
||||
function AccessOverPrototypeChain() {
|
||||
with (objectUnderTestExtended) {
|
||||
resultStore = first;
|
||||
}
|
||||
}
|
||||
|
||||
function AccessOverPrototypeChainTearDown() {
|
||||
return objectUnderTest.first === resultStore;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
function CompetingScopeSetup() {
|
||||
objectUnderTest = {first: VALUE_OF_PROPERTY};
|
||||
}
|
||||
|
||||
function CompetingScope() {
|
||||
var first = 'Not correct';
|
||||
with (objectUnderTest) {
|
||||
resultStore = first;
|
||||
}
|
||||
}
|
||||
|
||||
function CompetingScopeTearDown() {
|
||||
return objectUnderTest.first === resultStore;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
function SetOnSameLevelSetup() {
|
||||
objectUnderTest = {first: VALUE_OF_PROPERTY};
|
||||
}
|
||||
|
||||
function SetOnSameLevel() {
|
||||
with (objectUnderTest) {
|
||||
first = SOME_OTHER_VALUE;
|
||||
}
|
||||
}
|
||||
|
||||
function SetOnSameLevelTearDown() {
|
||||
return objectUnderTest.first === SOME_OTHER_VALUE;
|
||||
}
|
Loading…
Reference in New Issue
Block a user