1ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org// Copyright 2014 the V8 project authors. All rights reserved. 2ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 3ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org// found in the LICENSE file. 4ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 5ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 6ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgvar SetBenchmark = new BenchmarkSuite('Set', [1000], [ 7ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org new Benchmark('Add', false, false, 0, SetAdd), 8ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org new Benchmark('Has', false, false, 0, SetHas, SetSetup, SetTearDown), 9ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org new Benchmark('Delete', false, false, 0, SetDelete, SetSetup, SetTearDown), 10ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org new Benchmark('ForEach', false, false, 0, SetForEach, SetSetup, SetTearDown), 11ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org]); 12ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 13ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 14ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgvar set; 15ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgvar N = 10; 16ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 17ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 18ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgfunction SetSetup() { 19ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org set = new Set; 20ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org for (var i = 0; i < N; i++) { 21ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org set.add(i); 22ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org } 23ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} 24ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 25ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 26ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgfunction SetTearDown() { 27ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org map = null; 28ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} 29ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 30ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 31ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgfunction SetAdd() { 32ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org SetSetup(); 33ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org SetTearDown(); 34ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} 35ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 36ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 37ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgfunction SetHas() { 38ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org for (var i = 0; i < N; i++) { 39ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org if (!set.has(i)) { 40ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org throw new Error(); 41ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org } 42ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org } 43ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org for (var i = N; i < 2 * N; i++) { 44ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org if (set.has(i)) { 45ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org throw new Error(); 46ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org } 47ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org } 48ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} 49ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 50ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 51ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgfunction SetDelete() { 52ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org // This is run more than once per setup so we will end up deleting items 53ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org // more than once. Therefore, we do not the return value of delete. 54ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org for (var i = 0; i < N; i++) { 55ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org set.delete(i); 56ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org } 57ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} 58ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 59ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 60ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgfunction SetForEach() { 61ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org set.forEach(function(v, k) { 62ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org if (v !== k) { 63ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org throw new Error(); 64ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org } 65ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org }); 66ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} 67