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), 8 new Benchmark('Has', false, false, 0, WeakSetHas, WeakSetSetup, 9 WeakSetTearDown), 10 new Benchmark('Delete', false, false, 0, WeakSetDelete, WeakSetSetup, 11 WeakSetTearDown), 12]); 13 14 15var ws; 16var N = 10; 17var keys = []; 18 19 20for (var i = 0; i < N * 2; i++) { 21 keys[i] = {}; 22} 23 24 25function WeakSetSetup() { 26 ws = new WeakSet; 27 for (var i = 0; i < N; i++) { 28 ws.add(keys[i]); 29 } 30} 31 32 33function WeakSetTearDown() { 34 ws = null; 35} 36 37 38function WeakSetAdd() { 39 WeakSetSetup(); 40 WeakSetTearDown(); 41} 42 43 44function WeakSetHas() { 45 for (var i = 0; i < N; i++) { 46 if (!ws.has(keys[i])) { 47 throw new Error(); 48 } 49 } 50 for (var i = N; i < 2 * N; i++) { 51 if (ws.has(keys[i])) { 52 throw new Error(); 53 } 54 } 55} 56 57 58function WeakSetDelete() { 59 // This is run more than once per setup so we will end up deleting items 60 // more than once. Therefore, we do not the return value of delete. 61 for (var i = 0; i < N; i++) { 62 ws.delete(keys[i]); 63 } 64} 65