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

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: 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
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, SetAdd, SetSetupSmiBase, SetTearDown),
8 new Benchmark('Has', false, false, 0, SetHas, SetSetup, SetTearDown), 8 new Benchmark('Has', false, false, 0, SetHas, SetSetupSmi, SetTearDown),
9 new Benchmark('Delete', false, false, 0, SetDelete, SetSetup, SetTearDown), 9 new Benchmark('Delete', false, false, 0, SetDelete, SetSetupSmi, SetTearDown),
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, SetAdd, SetSetupStringBase, SetTearDown) ,
15 new Benchmark('Has', false, false, 0, SetHas, SetSetupString, SetTearDown),
16 new Benchmark('Delete', false, false, 0, SetDelete, SetSetupString, SetTearDow n),
17 ]);
18
19
20 var SetObjectBenchmark = new BenchmarkSuite('Set-Object', [1000], [
21 new Benchmark('Set', false, false, 0, SetAdd, SetSetupObjectBase, SetTearDown) ,
22 new Benchmark('Has', false, false, 0, SetHas, SetSetupObject, SetTearDown),
23 new Benchmark('Delete', false, false, 0, SetDelete, SetSetupObject, SetTearDow n),
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;
20 for (var i = 0; i < N; i++) { 38 }
21 set.add(i); 39
22 } 40
41 function SetSetupSmi() {
42 SetSetupSmiBase();
43 SetAdd();
44 }
45
46
47 function SetSetupStringBase() {
48 SetupStringKeys();
49 set = new Set;
50 }
51
52
53 function SetSetupString() {
54 SetSetupStringBase();
55 SetAdd();
56 }
57
58
59 function SetSetupObjectBase() {
60 SetupObjectKeys();
61 set = new Set;
62 }
63
64
65 function SetSetupObject() {
66 SetSetupObjectBase();
67 SetAdd();
23 } 68 }
24 69
25 70
26 function SetTearDown() { 71 function SetTearDown() {
27 map = null; 72 set = null;
28 } 73 }
29 74
30 75
31 function SetAdd() { 76 function SetAdd() {
32 SetSetup(); 77 for (var i = 0; i < N; i++) {
33 SetTearDown(); 78 set.add(keys[i], i);
79 }
34 } 80 }
35 81
36 82
37 function SetHas() { 83 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 SetDelete() {
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
59 105
60 function SetForEach() { 106 function SetForEach() {
61 set.forEach(function(v, k) { 107 set.forEach(function(v, k) {
62 if (v !== k) { 108 if (v !== k) {
63 throw new Error(); 109 throw new Error();
64 } 110 }
65 }); 111 });
66 } 112 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698