From: hablich Date: Mon, 1 Jun 2015 07:40:02 +0000 (-0700) Subject: For Micro-benchmarks for 'with' X-Git-Tag: upstream/4.7.83~2326 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f62d5ce9122b86527d97c11c82cc1d22327f563d;p=platform%2Fupstream%2Fv8.git 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} --- diff --git a/test/js-perf-test/JSTests.json b/test/js-perf-test/JSTests.json index b71257b8d..77b677086 100644 --- a/test/js-perf-test/JSTests.json +++ b/test/js-perf-test/JSTests.json @@ -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"} + ] } ] } diff --git a/test/js-perf-test/Scope/run.js b/test/js-perf-test/Scope/run.js new file mode 100644 index 000000000..9ce00a15a --- /dev/null +++ b/test/js-perf-test/Scope/run.js @@ -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 }); diff --git a/test/js-perf-test/Scope/with.js b/test/js-perf-test/Scope/with.js new file mode 100644 index 000000000..8ec2d30cf --- /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; +}