v8/test/js-perf-test/Collections/weakset.js
peterwmwong 0a66361d7c [js-perf-test] Add Collection constructor and double type microbenchmarks
- Add {Map/Set/WeakMap/WeakSet}-Constructor microbenchmarks
- Add {Map/Set}-Double microbenchmarks (testing heap number keys)

Bug: v8:6604
Change-Id: Icadd5c81bfb59a58a2a65e119663d3f22637165d
Reviewed-on: https://chromium-review.googlesource.com/773595
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49398}
2017-11-16 07:21:05 +00:00

73 lines
1.5 KiB
JavaScript

// Copyright 2014 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.
var SetBenchmark = new BenchmarkSuite('WeakSet', [1000], [
new Benchmark('Add', false, false, 0, WeakSetAdd, WeakSetSetupBase,
WeakSetTearDown),
new Benchmark('Has', false, false, 0, WeakSetHas, WeakSetSetup,
WeakSetTearDown),
new Benchmark('Delete', false, false, 0, WeakSetDelete, WeakSetSetup,
WeakSetTearDown),
]);
var SetBenchmark = new BenchmarkSuite('WeakSet-Constructor', [1000], [
new Benchmark('Constructor', false, false, 0, WeakSetConstructor, SetupObjectKeys,
WeakSetTearDown),
]);
var ws;
function WeakSetSetupBase() {
SetupObjectKeys();
ws = new WeakSet;
}
function WeakSetSetup() {
WeakSetSetupBase();
WeakSetAdd();
}
function WeakSetTearDown() {
ws = null;
}
function WeakSetConstructor() {
ws = new WeakSet(keys);
}
function WeakSetAdd() {
for (var i = 0; i < N; i++) {
ws.add(keys[i]);
}
}
function WeakSetHas() {
for (var i = 0; i < N; i++) {
if (!ws.has(keys[i])) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (ws.has(keys[i])) {
throw new Error();
}
}
}
function WeakSetDelete() {
// This is run more than once per setup so we will end up deleting items
// more than once. Therefore, we do not the return value of delete.
for (var i = 0; i < N; i++) {
ws.delete(keys[i]);
}
}