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