1// 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 15 16var ws; 17 18 19function WeakSetSetupBase() { 20 SetupObjectKeys(); 21 ws = new WeakSet; 22} 23 24 25function WeakSetSetup() { 26 WeakSetSetupBase(); 27 WeakSetAdd(); 28} 29 30 31function WeakSetTearDown() { 32 ws = null; 33} 34 35 36function WeakSetAdd() { 37 for (var i = 0; i < N; i++) { 38 ws.add(keys[i]); 39 } 40} 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} 64