From 5b3a893f9eb97fa8fd8ab0dcf6bcfedea2fa2c3b Mon Sep 17 00:00:00 2001 From: franzih Date: Wed, 16 Nov 2016 21:53:37 -0800 Subject: [PATCH] [test] Add object literal micro-benchmarks. Add computed property names in object literal micro-benchmarks. Taken from http://kpdecker.github.io/six-speed/ BUG=v8:5622 Review-Url: https://codereview.chromium.org/2509593004 Cr-Commit-Position: refs/heads/master@{#41057} --- test/js-perf-test/SixSpeed.json | 14 +++++++ .../object_literals/object_literals.js | 41 +++++++++++++++++++ .../SixSpeed/object_literals/run.js | 25 +++++++++++ 3 files changed, 80 insertions(+) create mode 100644 test/js-perf-test/SixSpeed/object_literals/object_literals.js create mode 100644 test/js-perf-test/SixSpeed/object_literals/run.js diff --git a/test/js-perf-test/SixSpeed.json b/test/js-perf-test/SixSpeed.json index c72345efdb..29226de4a2 100644 --- a/test/js-perf-test/SixSpeed.json +++ b/test/js-perf-test/SixSpeed.json @@ -8,6 +8,20 @@ "total": true, "resources": ["base.js"], "tests": [ + { + "name": "Computed property names in object literals", + "path": ["SixSpeed/object_literals"], + "main": "run.js", + "resources": [ + "run.js", + "object_literals.js" + ], + "results_regexp": "^%s\\(Score\\): (.+)$", + "tests": [ + {"name": "ObjectLiterals-ES5"}, + {"name": "ObjectLiterals-ES6"} + ] + }, { "name": "Spread", "path": ["SixSpeed/spread"], diff --git a/test/js-perf-test/SixSpeed/object_literals/object_literals.js b/test/js-perf-test/SixSpeed/object_literals/object_literals.js new file mode 100644 index 0000000000..831e173ec2 --- /dev/null +++ b/test/js-perf-test/SixSpeed/object_literals/object_literals.js @@ -0,0 +1,41 @@ +// Copyright 2016 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. + +// This benchmark is based on the six-speed benchmark build output. +// Copyright 2014 Kevin Decker + + +new BenchmarkSuite('ObjectLiterals-ES5', [1000], [ + new Benchmark('ES5', false, false, 0, ES5), +]); + +new BenchmarkSuite('ObjectLiterals-ES6', [1000], [ + new Benchmark('ES6', false, false, 0, ES6), +]); + +// ---------------------------------------------------------------------------- +// Benchmark: ES5 +// ---------------------------------------------------------------------------- + +function ES5() { + "use strict"; + var name = 'foo'; + var ret = {}; + ret[name] = 'bar'; + return ret; +} + + +// ---------------------------------------------------------------------------- +// Benchmark: ES6 +// ---------------------------------------------------------------------------- + +function ES6() { + "use strict"; + var name = 'foo'; + var ret = { + [name]: 'bar', + }; + return ret; +} diff --git a/test/js-perf-test/SixSpeed/object_literals/run.js b/test/js-perf-test/SixSpeed/object_literals/run.js new file mode 100644 index 0000000000..f8b5343f9e --- /dev/null +++ b/test/js-perf-test/SixSpeed/object_literals/run.js @@ -0,0 +1,25 @@ +// Copyright 2016 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('object_literals.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + '(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 });