[js-perf-tests] Add classes benchmarks from SixSpeed.

In particular the Babel generated code for simple constructors is
of interest here, since that's what we hit in the wild most often
currently.

BUG=v8:6275
R=yangguo@chromium.org

Review-Url: https://codereview.chromium.org/2822203004
Cr-Commit-Position: refs/heads/master@{#44719}
This commit is contained in:
bmeurer 2017-04-19 04:23:48 -07:00 committed by Commit bot
parent 4cb011885b
commit b161581947
4 changed files with 117 additions and 0 deletions

View File

@ -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", "name": "Computed property names in object literals",
"path": ["SixSpeed"], "path": ["SixSpeed"],

View File

@ -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 <https://github.com/kpdecker/six-speed/>
'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();
}

View File

@ -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 <https://github.com/kpdecker/six-speed/>
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();
};

View File

@ -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 <https://github.com/kpdecker/six-speed/>
new BenchmarkSuite('ES6', [1000], [
new Benchmark('ES6', false, false, 0, ES6),
]);
class C {
constructor() {
this.foo = 'bar';
}
bar() {}
}
function ES6() {
return new C();
}