Index: test/js-perf-test/Scope/with.js |
diff --git a/test/js-perf-test/Scope/with.js b/test/js-perf-test/Scope/with.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8ec2d30cf0ff63a114c6e25722b25e20d0ac542c |
--- /dev/null |
+++ b/test/js-perf-test/Scope/with.js |
@@ -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; |
+} |