mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.5 KiB
90 lines
2.5 KiB
// 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;
|
|
}
|
|
|