Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: test/js-perf-test/Collections/map.js

Issue 685753004: Add performance tests for Map/Set with String and Object keys (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Address dslomov comment Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « test/js-perf-test/Collections/common.js ('k') | test/js-perf-test/Collections/run.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 5
6 var MapBenchmark = new BenchmarkSuite('Map', [1000], [ 6 var MapSmiBenchmark = new BenchmarkSuite('Map-Smi', [1000], [
7 new Benchmark('Set', false, false, 0, MapSet), 7 new Benchmark('Set', false, false, 0, MapSetSmi, MapSetupSmiBase, MapTearDown) ,
8 new Benchmark('Has', false, false, 0, MapHas, MapSetup, MapTearDown), 8 new Benchmark('Has', false, false, 0, MapHasSmi, MapSetupSmi, MapTearDown),
9 new Benchmark('Get', false, false, 0, MapGet, MapSetup, MapTearDown), 9 new Benchmark('Get', false, false, 0, MapGetSmi, MapSetupSmi, MapTearDown),
10 new Benchmark('Delete', false, false, 0, MapDelete, MapSetup, MapTearDown), 10 new Benchmark('Delete', false, false, 0, MapDeleteSmi, MapSetupSmi, MapTearDow n),
11 new Benchmark('ForEach', false, false, 0, MapForEach, MapSetup, MapTearDown), 11 ]);
12
13
14 var MapStringBenchmark = new BenchmarkSuite('Map-String', [1000], [
15 new Benchmark('Set', false, false, 0, MapSetString, MapSetupStringBase, MapTea rDown),
16 new Benchmark('Has', false, false, 0, MapHasString, MapSetupString, MapTearDow n),
17 new Benchmark('Get', false, false, 0, MapGetString, MapSetupString, MapTearDow n),
18 new Benchmark('Delete', false, false, 0, MapDeleteString, MapSetupString, MapT earDown),
19 ]);
20
21
22 var MapObjectBenchmark = new BenchmarkSuite('Map-Object', [1000], [
23 new Benchmark('Set', false, false, 0, MapSetObject, MapSetupObjectBase, MapTea rDown),
24 new Benchmark('Has', false, false, 0, MapHasObject, MapSetupObject, MapTearDow n),
25 new Benchmark('Get', false, false, 0, MapGetObject, MapSetupObject, MapTearDow n),
26 new Benchmark('Delete', false, false, 0, MapDeleteObject, MapSetupObject, MapT earDown),
27 ]);
28
29
30 var MapIterationBenchmark = new BenchmarkSuite('Map-Iteration', [1000], [
31 new Benchmark('ForEach', false, false, 0, MapForEach, MapSetupSmi, MapTearDown ),
12 ]); 32 ]);
13 33
14 34
15 var map; 35 var map;
16 var N = 10;
17 36
18 37
19 function MapSetup() { 38 function MapSetupSmiBase() {
39 SetupSmiKeys();
20 map = new Map; 40 map = new Map;
21 for (var i = 0; i < N; i++) {
22 map.set(i, i);
23 }
24 } 41 }
25 42
26 43
44 function MapSetupSmi() {
45 MapSetupSmiBase();
46 MapSetSmi();
47 }
48
49
50 function MapSetupStringBase() {
51 SetupStringKeys();
52 map = new Map;
53 }
54
55
56 function MapSetupString() {
57 MapSetupStringBase();
58 MapSetString();
59 }
60
61
62 function MapSetupObjectBase() {
63 SetupObjectKeys();
64 map = new Map;
65 }
66
67
68 function MapSetupObject() {
69 MapSetupObjectBase();
70 MapSetObject();
71 }
72
73
27 function MapTearDown() { 74 function MapTearDown() {
28 map = null; 75 map = null;
29 } 76 }
30 77
31 78
32 function MapSet() { 79 function MapSetSmi() {
33 MapSetup(); 80 for (var i = 0; i < N; i++) {
34 MapTearDown(); 81 map.set(keys[i], i);
82 }
35 } 83 }
36 84
37 85
38 function MapHas() { 86 function MapHasSmi() {
39 for (var i = 0; i < N; i++) { 87 for (var i = 0; i < N; i++) {
40 if (!map.has(i)) { 88 if (!map.has(keys[i])) {
41 throw new Error(); 89 throw new Error();
42 } 90 }
43 } 91 }
44 for (var i = N; i < 2 * N; i++) { 92 for (var i = N; i < 2 * N; i++) {
45 if (map.has(i)) { 93 if (map.has(keys[i])) {
46 throw new Error(); 94 throw new Error();
47 } 95 }
48 } 96 }
49 } 97 }
50 98
51 99
52 function MapGet() { 100 function MapGetSmi() {
53 for (var i = 0; i < N; i++) { 101 for (var i = 0; i < N; i++) {
54 if (map.get(i) !== i) { 102 if (map.get(keys[i]) !== i) {
55 throw new Error(); 103 throw new Error();
56 } 104 }
57 } 105 }
58 for (var i = N; i < 2 * N; i++) { 106 for (var i = N; i < 2 * N; i++) {
59 if (map.get(i) !== undefined) { 107 if (map.get(keys[i]) !== undefined) {
60 throw new Error(); 108 throw new Error();
61 } 109 }
62 } 110 }
63 } 111 }
64 112
65 113
66 function MapDelete() { 114 function MapDeleteSmi() {
67 // This is run more than once per setup so we will end up deleting items 115 // 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. 116 // more than once. Therefore, we do not the return value of delete.
69 for (var i = 0; i < N; i++) { 117 for (var i = 0; i < N; i++) {
70 map.delete(i); 118 map.delete(keys[i]);
71 } 119 }
72 } 120 }
73 121
122
123 function MapSetString() {
124 for (var i = 0; i < N; i++) {
125 map.set(keys[i], i);
126 }
127 }
128
129
130 function MapHasString() {
131 for (var i = 0; i < N; i++) {
132 if (!map.has(keys[i])) {
133 throw new Error();
134 }
135 }
136 for (var i = N; i < 2 * N; i++) {
137 if (map.has(keys[i])) {
138 throw new Error();
139 }
140 }
141 }
142
143
144 function MapGetString() {
145 for (var i = 0; i < N; i++) {
146 if (map.get(keys[i]) !== i) {
147 throw new Error();
148 }
149 }
150 for (var i = N; i < 2 * N; i++) {
151 if (map.get(keys[i]) !== undefined) {
152 throw new Error();
153 }
154 }
155 }
156
157
158 function MapDeleteString() {
159 // This is run more than once per setup so we will end up deleting items
160 // more than once. Therefore, we do not the return value of delete.
161 for (var i = 0; i < N; i++) {
162 map.delete(keys[i]);
163 }
164 }
165
166
167 function MapSetObject() {
168 for (var i = 0; i < N; i++) {
169 map.set(keys[i], i);
170 }
171 }
172
173
174 function MapHasObject() {
175 for (var i = 0; i < N; i++) {
176 if (!map.has(keys[i])) {
177 throw new Error();
178 }
179 }
180 for (var i = N; i < 2 * N; i++) {
181 if (map.has(keys[i])) {
182 throw new Error();
183 }
184 }
185 }
186
187
188 function MapGetObject() {
189 for (var i = 0; i < N; i++) {
190 if (map.get(keys[i]) !== i) {
191 throw new Error();
192 }
193 }
194 for (var i = N; i < 2 * N; i++) {
195 if (map.get(keys[i]) !== undefined) {
196 throw new Error();
197 }
198 }
199 }
200
201
202 function MapDeleteObject() {
203 // This is run more than once per setup so we will end up deleting items
204 // more than once. Therefore, we do not the return value of delete.
205 for (var i = 0; i < N; i++) {
206 map.delete(keys[i]);
207 }
208 }
209
74 210
75 function MapForEach() { 211 function MapForEach() {
76 map.forEach(function(v, k) { 212 map.forEach(function(v, k) {
77 if (v !== k) { 213 if (v !== k) {
78 throw new Error(); 214 throw new Error();
79 } 215 }
80 }); 216 });
81 } 217 }
OLDNEW
« no previous file with comments | « test/js-perf-test/Collections/common.js ('k') | test/js-perf-test/Collections/run.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698