From f31e80548c97170147e13f6c2deede34bb3dcd16 Mon Sep 17 00:00:00 2001 From: franzih Date: Sun, 20 Nov 2016 12:07:23 -0800 Subject: [PATCH] [test] Add array destructuring micro-benchmarks. Add array pattern destructuring micro-benchmarks. These benchmarks compare a naive ES5 immplementation to an ES6-style implementation that uses destructuring. Adapted from http://kpdecker.github.io/six-speed BUG=v8:5267 Review-Url: https://codereview.chromium.org/2513273002 Cr-Commit-Position: refs/heads/master@{#41126} --- test/js-perf-test/SixSpeed.json | 14 +++++++ .../array_destructuring.js | 38 +++++++++++++++++++ .../SixSpeed/array_destructuring/run.js | 25 ++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 test/js-perf-test/SixSpeed/array_destructuring/array_destructuring.js create mode 100644 test/js-perf-test/SixSpeed/array_destructuring/run.js diff --git a/test/js-perf-test/SixSpeed.json b/test/js-perf-test/SixSpeed.json index 29226de4a2..ffd38e3b42 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": "Array pattern destructuring", + "path": ["SixSpeed/array_destructuring"], + "main": "run.js", + "resources": [ + "run.js", + "array_destructuring.js" + ], + "results_regexp": "^%s\\(Score\\): (.+)$", + "tests": [ + {"name": "ArrayDestructuring-ES5"}, + {"name": "ArrayDestructuring-ES6"} + ] + }, { "name": "Computed property names in object literals", "path": ["SixSpeed/object_literals"], diff --git a/test/js-perf-test/SixSpeed/array_destructuring/array_destructuring.js b/test/js-perf-test/SixSpeed/array_destructuring/array_destructuring.js new file mode 100644 index 0000000000..f4a1d53f5c --- /dev/null +++ b/test/js-perf-test/SixSpeed/array_destructuring/array_destructuring.js @@ -0,0 +1,38 @@ +// 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('ArrayDestructuring-ES5', [1000], [ + new Benchmark('ES5', false, false, 0, ES5), +]); + +new BenchmarkSuite('ArrayDestructuring-ES6', [1000], [ + new Benchmark('ES6', false, false, 0, ES6), +]); + +// ---------------------------------------------------------------------------- +// Benchmark: ES5 +// ---------------------------------------------------------------------------- + +function ES5() { + "use strict"; + var data = [1, 2, 3]; + var c = data[0]; + return c; +} + + +// ---------------------------------------------------------------------------- +// Benchmark: ES6 +// ---------------------------------------------------------------------------- + +function ES6() { + "use strict"; + var data = [1, 2, 3]; + var [c] = data; + return c; +} diff --git a/test/js-perf-test/SixSpeed/array_destructuring/run.js b/test/js-perf-test/SixSpeed/array_destructuring/run.js new file mode 100644 index 0000000000..5988512619 --- /dev/null +++ b/test/js-perf-test/SixSpeed/array_destructuring/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('array_destructuring.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 });