mirror of
https://github.com/nodejs/node.git
synced 2025-05-15 22:04:26 +00:00

PR-URL: https://github.com/nodejs/node/pull/42657 Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com>
61 lines
2.5 KiB
JavaScript
61 lines
2.5 KiB
JavaScript
// Copyright 2019 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.
|
|
|
|
function addBenchmark(name, test) {
|
|
new BenchmarkSuite(name, [1000],
|
|
[
|
|
new Benchmark(name, false, false, 0, test)
|
|
]);
|
|
}
|
|
|
|
addBenchmark('Smi-Value', smiValue);
|
|
addBenchmark('Prototype-Chain-Value', functionOnPrototypeValue);
|
|
|
|
// TODO(all): might be a good idea to also do with receivers: double, HeapObject
|
|
// with map, HeapObject, tagged, empty getter / accessor.
|
|
// Also, element keyed loads (in another file, probably?) both with strings and
|
|
// numbers for normal, cons,and sliced strings (for named properties).
|
|
// Also, monomorphic vs poly vs mega.
|
|
|
|
function smiValue() {
|
|
function constructSmi() {
|
|
this.smi = 0;
|
|
}
|
|
let o = new constructSmi();
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
|
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
|
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
|
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
|
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
|
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
|
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
|
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
|
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
|
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
|
}
|
|
}
|
|
|
|
function functionOnPrototypeValue() {
|
|
function objectWithPrototypeChain() {
|
|
}
|
|
objectWithPrototypeChain.prototype.__proto__ =
|
|
{__proto__:{__proto__:{__proto__:{f(){}}}}};
|
|
let o = new objectWithPrototypeChain();
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
|
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
|
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
|
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
|
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
|
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
|
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
|
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
|
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
|
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
|
}
|
|
}
|