blob: 1dca043c343bc1e0359515f9ef183f83dbfbaf8e [file] [log] [blame]
Andrew Topef837fa2017-10-04 22:44:25 -07001// Copyright 2014 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5
6var SetBenchmark = new BenchmarkSuite('WeakSet', [1000], [
7 new Benchmark('Add', false, false, 0, WeakSetAdd, WeakSetSetupBase,
8 WeakSetTearDown),
9 new Benchmark('Has', false, false, 0, WeakSetHas, WeakSetSetup,
10 WeakSetTearDown),
11 new Benchmark('Delete', false, false, 0, WeakSetDelete, WeakSetSetup,
12 WeakSetTearDown),
13]);
14
Mike Fleming3933d922018-04-02 10:53:08 -070015var SetBenchmark = new BenchmarkSuite('WeakSet-Constructor', [1000], [
16 new Benchmark('Constructor', false, false, 0, WeakSetConstructor, SetupObjectKeys,
17 WeakSetTearDown),
18]);
Andrew Topef837fa2017-10-04 22:44:25 -070019
20var ws;
21
22
23function WeakSetSetupBase() {
24 SetupObjectKeys();
25 ws = new WeakSet;
26}
27
28
29function WeakSetSetup() {
30 WeakSetSetupBase();
31 WeakSetAdd();
32}
33
34
35function WeakSetTearDown() {
36 ws = null;
37}
38
39
Mike Fleming3933d922018-04-02 10:53:08 -070040function WeakSetConstructor() {
41 ws = new WeakSet(keys);
42}
43
44
Andrew Topef837fa2017-10-04 22:44:25 -070045function WeakSetAdd() {
46 for (var i = 0; i < N; i++) {
47 ws.add(keys[i]);
48 }
49}
50
51
52function WeakSetHas() {
53 for (var i = 0; i < N; i++) {
54 if (!ws.has(keys[i])) {
55 throw new Error();
56 }
57 }
58 for (var i = N; i < 2 * N; i++) {
59 if (ws.has(keys[i])) {
60 throw new Error();
61 }
62 }
63}
64
65
66function WeakSetDelete() {
67 // This is run more than once per setup so we will end up deleting items
68 // more than once. Therefore, we do not the return value of delete.
69 for (var i = 0; i < N; i++) {
70 ws.delete(keys[i]);
71 }
72}