blob: 2936477b3597b252c8fa03401304c5d01019e794 [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// 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], [
Emily Bernierd0a1eb72015-03-24 16:35:39 -04007 new Benchmark('Add', false, false, 0, WeakSetAdd, WeakSetSetupBase,
8 WeakSetTearDown),
Ben Murdochb8a8cc12014-11-26 15:28:44 +00009 new Benchmark('Has', false, false, 0, WeakSetHas, WeakSetSetup,
10 WeakSetTearDown),
11 new Benchmark('Delete', false, false, 0, WeakSetDelete, WeakSetSetup,
12 WeakSetTearDown),
13]);
14
15
16var ws;
Ben Murdochb8a8cc12014-11-26 15:28:44 +000017
18
Emily Bernierd0a1eb72015-03-24 16:35:39 -040019function WeakSetSetupBase() {
20 SetupObjectKeys();
21 ws = new WeakSet;
Ben Murdochb8a8cc12014-11-26 15:28:44 +000022}
23
24
25function WeakSetSetup() {
Emily Bernierd0a1eb72015-03-24 16:35:39 -040026 WeakSetSetupBase();
27 WeakSetAdd();
Ben Murdochb8a8cc12014-11-26 15:28:44 +000028}
29
30
31function WeakSetTearDown() {
32 ws = null;
33}
34
35
36function WeakSetAdd() {
Emily Bernierd0a1eb72015-03-24 16:35:39 -040037 for (var i = 0; i < N; i++) {
38 ws.add(keys[i]);
39 }
Ben Murdochb8a8cc12014-11-26 15:28:44 +000040}
41
42
43function WeakSetHas() {
44 for (var i = 0; i < N; i++) {
45 if (!ws.has(keys[i])) {
46 throw new Error();
47 }
48 }
49 for (var i = N; i < 2 * N; i++) {
50 if (ws.has(keys[i])) {
51 throw new Error();
52 }
53 }
54}
55
56
57function WeakSetDelete() {
58 // This is run more than once per setup so we will end up deleting items
59 // more than once. Therefore, we do not the return value of delete.
60 for (var i = 0; i < N; i++) {
61 ws.delete(keys[i]);
62 }
63}