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

Side by Side Diff: test/js-perf-test/Collections/set.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/run.js ('k') | test/js-perf-test/Collections/weakmap.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 SetBenchmark = new BenchmarkSuite('Set', [1000], [ 6 var SetSmiBenchmark = new BenchmarkSuite('Set-Smi', [1000], [
7 new Benchmark('Add', false, false, 0, SetAdd), 7 new Benchmark('Set', false, false, 0, SetAddSmi, SetSetupSmiBase, SetTearDown) ,
8 new Benchmark('Has', false, false, 0, SetHas, SetSetup, SetTearDown), 8 new Benchmark('Has', false, false, 0, SetHasSmi, SetSetupSmi, SetTearDown),
9 new Benchmark('Delete', false, false, 0, SetDelete, SetSetup, SetTearDown), 9 new Benchmark('Delete', false, false, 0, SetDeleteSmi, SetSetupSmi, SetTearDow n),
10 new Benchmark('ForEach', false, false, 0, SetForEach, SetSetup, SetTearDown), 10 ]);
11
12
13 var SetStringBenchmark = new BenchmarkSuite('Set-String', [1000], [
14 new Benchmark('Set', false, false, 0, SetAddString, SetSetupStringBase, SetTea rDown),
15 new Benchmark('Has', false, false, 0, SetHasString, SetSetupString, SetTearDow n),
16 new Benchmark('Delete', false, false, 0, SetDeleteString, SetSetupString, SetT earDown),
17 ]);
18
19
20 var SetObjectBenchmark = new BenchmarkSuite('Set-Object', [1000], [
21 new Benchmark('Set', false, false, 0, SetAddObject, SetSetupObjectBase, SetTea rDown),
22 new Benchmark('Has', false, false, 0, SetHasObject, SetSetupObject, SetTearDow n),
23 new Benchmark('Delete', false, false, 0, SetDeleteObject, SetSetupObject, SetT earDown),
24 ]);
25
26
27 var SetIterationBenchmark = new BenchmarkSuite('Set-Iteration', [1000], [
28 new Benchmark('ForEach', false, false, 0, SetForEach, SetSetupSmi, SetTearDown ),
11 ]); 29 ]);
12 30
13 31
14 var set; 32 var set;
15 var N = 10;
16 33
17 34
18 function SetSetup() { 35 function SetSetupSmiBase() {
36 SetupSmiKeys();
19 set = new Set; 37 set = new Set;
38 }
39
40
41 function SetSetupSmi() {
42 SetSetupSmiBase();
43 SetAddSmi();
44 }
45
46
47 function SetSetupStringBase() {
48 SetupStringKeys();
49 set = new Set;
50 }
51
52
53 function SetSetupString() {
54 SetSetupStringBase();
55 SetAddString();
56 }
57
58
59 function SetSetupObjectBase() {
60 SetupObjectKeys();
61 set = new Set;
62 }
63
64
65 function SetSetupObject() {
66 SetSetupObjectBase();
67 SetAddObject();
68 }
69
70
71 function SetTearDown() {
72 set = null;
73 }
74
75
76 function SetAddSmi() {
20 for (var i = 0; i < N; i++) { 77 for (var i = 0; i < N; i++) {
21 set.add(i); 78 set.add(keys[i], i);
22 } 79 }
23 } 80 }
24 81
25 82
26 function SetTearDown() { 83 function SetHasSmi() {
27 map = null;
28 }
29
30
31 function SetAdd() {
32 SetSetup();
33 SetTearDown();
34 }
35
36
37 function SetHas() {
38 for (var i = 0; i < N; i++) { 84 for (var i = 0; i < N; i++) {
39 if (!set.has(i)) { 85 if (!set.has(keys[i])) {
40 throw new Error(); 86 throw new Error();
41 } 87 }
42 } 88 }
43 for (var i = N; i < 2 * N; i++) { 89 for (var i = N; i < 2 * N; i++) {
44 if (set.has(i)) { 90 if (set.has(keys[i])) {
45 throw new Error(); 91 throw new Error();
46 } 92 }
47 } 93 }
48 } 94 }
49 95
50 96
51 function SetDelete() { 97 function SetDeleteSmi() {
52 // This is run more than once per setup so we will end up deleting items 98 // 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. 99 // more than once. Therefore, we do not the return value of delete.
54 for (var i = 0; i < N; i++) { 100 for (var i = 0; i < N; i++) {
55 set.delete(i); 101 set.delete(keys[i]);
56 } 102 }
57 } 103 }
58 104
105
106 function SetAddString() {
107 for (var i = 0; i < N; i++) {
108 set.add(keys[i], i);
109 }
110 }
111
112
113 function SetHasString() {
114 for (var i = 0; i < N; i++) {
115 if (!set.has(keys[i])) {
116 throw new Error();
117 }
118 }
119 for (var i = N; i < 2 * N; i++) {
120 if (set.has(keys[i])) {
121 throw new Error();
122 }
123 }
124 }
125
126
127 function SetDeleteString() {
128 // This is run more than once per setup so we will end up deleting items
129 // more than once. Therefore, we do not the return value of delete.
130 for (var i = 0; i < N; i++) {
131 set.delete(keys[i]);
132 }
133 }
134
135
136 function SetAddObject() {
137 for (var i = 0; i < N; i++) {
138 set.add(keys[i], i);
139 }
140 }
141
142
143 function SetHasObject() {
144 for (var i = 0; i < N; i++) {
145 if (!set.has(keys[i])) {
146 throw new Error();
147 }
148 }
149 for (var i = N; i < 2 * N; i++) {
150 if (set.has(keys[i])) {
151 throw new Error();
152 }
153 }
154 }
155
156
157 function SetDeleteObject() {
158 // This is run more than once per setup so we will end up deleting items
159 // more than once. Therefore, we do not the return value of delete.
160 for (var i = 0; i < N; i++) {
161 set.delete(keys[i]);
162 }
163 }
164
59 165
60 function SetForEach() { 166 function SetForEach() {
61 set.forEach(function(v, k) { 167 set.forEach(function(v, k) {
62 if (v !== k) { 168 if (v !== k) {
63 throw new Error(); 169 throw new Error();
64 } 170 }
65 }); 171 });
66 } 172 }
OLDNEW
« no previous file with comments | « test/js-perf-test/Collections/run.js ('k') | test/js-perf-test/Collections/weakmap.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698