Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / v8 / test / perf-test / Collections / weakmap.js
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('WeakMap', [1000], [
7   new Benchmark('Set', false, false, 0, WeakMapSet),
8   new Benchmark('Has', false, false, 0, WeakMapHas, WeakMapSetup,
9       WeakMapTearDown),
10   new Benchmark('Get', false, false, 0, WeakMapGet, WeakMapSetup,
11       WeakMapTearDown),
12   new Benchmark('Delete', false, false, 0, WeakMapDelete, WeakMapSetup,
13       WeakMapTearDown),
14 ]);
15
16
17 var wm;
18 var N = 10;
19 var keys = [];
20
21
22 for (var i = 0; i < N * 2; i++) {
23   keys[i] = {};
24 }
25
26
27 function WeakMapSetup() {
28   wm = new WeakMap;
29   for (var i = 0; i < N; i++) {
30     wm.set(keys[i], i);
31   }
32 }
33
34
35 function WeakMapTearDown() {
36   wm = null;
37 }
38
39
40 function WeakMapSet() {
41   WeakMapSetup();
42   WeakMapTearDown();
43 }
44
45
46 function WeakMapHas() {
47   for (var i = 0; i < N; i++) {
48     if (!wm.has(keys[i])) {
49       throw new Error();
50     }
51   }
52   for (var i = N; i < 2 * N; i++) {
53     if (wm.has(keys[i])) {
54       throw new Error();
55     }
56   }
57 }
58
59
60 function WeakMapGet() {
61   for (var i = 0; i < N; i++) {
62     if (wm.get(keys[i]) !== i) {
63       throw new Error();
64     }
65   }
66   for (var i = N; i < 2 * N; i++) {
67     if (wm.get(keys[i]) !== undefined) {
68       throw new Error();
69     }
70   }
71 }
72
73
74 function WeakMapDelete() {
75   // This is run more than once per setup so we will end up deleting items
76   // more than once. Therefore, we do not the return value of delete.
77   for (var i = 0; i < N; i++) {
78     wm.delete(keys[i]);
79   }
80 }