OLD | NEW |
| (Empty) |
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 | |
6 var MapBenchmark = new BenchmarkSuite('Map', [1000], [ | |
7 new Benchmark('Set', false, false, 0, MapSet), | |
8 new Benchmark('Has', false, false, 0, MapHas, MapSetup, MapTearDown), | |
9 new Benchmark('Get', false, false, 0, MapGet, MapSetup, MapTearDown), | |
10 new Benchmark('Delete', false, false, 0, MapDelete, MapSetup, MapTearDown), | |
11 new Benchmark('ForEach', false, false, 0, MapForEach, MapSetup, MapTearDown), | |
12 ]); | |
13 | |
14 | |
15 var map; | |
16 var N = 10; | |
17 | |
18 | |
19 function MapSetup() { | |
20 map = new Map; | |
21 for (var i = 0; i < N; i++) { | |
22 map.set(i, i); | |
23 } | |
24 } | |
25 | |
26 | |
27 function MapTearDown() { | |
28 map = null; | |
29 } | |
30 | |
31 | |
32 function MapSet() { | |
33 MapSetup(); | |
34 MapTearDown(); | |
35 } | |
36 | |
37 | |
38 function MapHas() { | |
39 for (var i = 0; i < N; i++) { | |
40 if (!map.has(i)) { | |
41 throw new Error(); | |
42 } | |
43 } | |
44 for (var i = N; i < 2 * N; i++) { | |
45 if (map.has(i)) { | |
46 throw new Error(); | |
47 } | |
48 } | |
49 } | |
50 | |
51 | |
52 function MapGet() { | |
53 for (var i = 0; i < N; i++) { | |
54 if (map.get(i) !== i) { | |
55 throw new Error(); | |
56 } | |
57 } | |
58 for (var i = N; i < 2 * N; i++) { | |
59 if (map.get(i) !== undefined) { | |
60 throw new Error(); | |
61 } | |
62 } | |
63 } | |
64 | |
65 | |
66 function MapDelete() { | |
67 // This is run more than once per setup so we will end up deleting items | |
68 // more than once. Therefore, we do not the return value of delete. | |
69 for (var i = 0; i < N; i++) { | |
70 map.delete(i); | |
71 } | |
72 } | |
73 | |
74 | |
75 function MapForEach() { | |
76 map.forEach(function(v, k) { | |
77 if (v !== k) { | |
78 throw new Error(); | |
79 } | |
80 }); | |
81 } | |
OLD | NEW |