diff --git a/test/js-perf-test/SixSpeed.json b/test/js-perf-test/SixSpeed.json index 021b58a3ea..15a2792c6a 100644 --- a/test/js-perf-test/SixSpeed.json +++ b/test/js-perf-test/SixSpeed.json @@ -27,6 +27,31 @@ } ] }, + { + "name": "Classes", + "path": ["SixSpeed"], + "results_regexp": "^%s\\(Score\\): (.+)$", + "tests": [ + { + "name": "ES5", + "main": "run.js", + "resources": ["classes/es5.js"], + "test_flags": ["classes/es5"] + }, + { + "name": "Babel", + "main": "run.js", + "resources": ["classes/babel.js"], + "test_flags": ["classes/babel"] + }, + { + "name": "ES6", + "main": "run.js", + "resources": ["classes/es6.js"], + "test_flags": ["classes/es6"] + } + ] + }, { "name": "Computed property names in object literals", "path": ["SixSpeed"], diff --git a/test/js-perf-test/SixSpeed/classes/babel.js b/test/js-perf-test/SixSpeed/classes/babel.js new file mode 100644 index 0000000000..e73ec1ae0c --- /dev/null +++ b/test/js-perf-test/SixSpeed/classes/babel.js @@ -0,0 +1,51 @@ +// Copyright 2017 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 + +'use strict'; + +new BenchmarkSuite('Babel', [1000], [ + new Benchmark('Babel', false, false, 0, Babel), +]); + +var _createClass = function() { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ('value' in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function(Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError('Cannot call a class as a function'); + } +} + +var C = function() { + function C() { + _classCallCheck(this, C); + + this.foo = 'bar'; + } + + _createClass(C, [{key: 'bar', value: function bar() {}}]); + + return C; +}(); + +function Babel() { + return new C(); +} diff --git a/test/js-perf-test/SixSpeed/classes/es5.js b/test/js-perf-test/SixSpeed/classes/es5.js new file mode 100644 index 0000000000..410aa33b8d --- /dev/null +++ b/test/js-perf-test/SixSpeed/classes/es5.js @@ -0,0 +1,20 @@ +// Copyright 2017 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('ES5', [1000], [ + new Benchmark('ES5', false, false, 0, ES5), +]); + +function C() { + this.foo = 'bar'; +} + +C.prototype.bar = function() {}; + +function ES5() { + return new C(); +}; diff --git a/test/js-perf-test/SixSpeed/classes/es6.js b/test/js-perf-test/SixSpeed/classes/es6.js new file mode 100644 index 0000000000..d7ccc87e22 --- /dev/null +++ b/test/js-perf-test/SixSpeed/classes/es6.js @@ -0,0 +1,21 @@ +// Copyright 2017 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('ES6', [1000], [ + new Benchmark('ES6', false, false, 0, ES6), +]); + +class C { + constructor() { + this.foo = 'bar'; + } + bar() {} +} + +function ES6() { + return new C(); +}