Index: test/js-perf-test/Collections/set.js |
diff --git a/test/js-perf-test/Collections/set.js b/test/js-perf-test/Collections/set.js |
index e6455e1c0afe15fb8196e1b1862668d7ca111d34..3be27f57ec30b77ac4d8ac4435a38a73b4cad7b7 100644 |
--- a/test/js-perf-test/Collections/set.js |
+++ b/test/js-perf-test/Collections/set.js |
@@ -3,56 +3,162 @@ |
// found in the LICENSE file. |
-var SetBenchmark = new BenchmarkSuite('Set', [1000], [ |
- new Benchmark('Add', false, false, 0, SetAdd), |
- new Benchmark('Has', false, false, 0, SetHas, SetSetup, SetTearDown), |
- new Benchmark('Delete', false, false, 0, SetDelete, SetSetup, SetTearDown), |
- new Benchmark('ForEach', false, false, 0, SetForEach, SetSetup, SetTearDown), |
+var SetSmiBenchmark = new BenchmarkSuite('Set-Smi', [1000], [ |
+ new Benchmark('Set', false, false, 0, SetAddSmi, SetSetupSmiBase, SetTearDown), |
+ new Benchmark('Has', false, false, 0, SetHasSmi, SetSetupSmi, SetTearDown), |
+ new Benchmark('Delete', false, false, 0, SetDeleteSmi, SetSetupSmi, SetTearDown), |
+]); |
+ |
+ |
+var SetStringBenchmark = new BenchmarkSuite('Set-String', [1000], [ |
+ new Benchmark('Set', false, false, 0, SetAddString, SetSetupStringBase, SetTearDown), |
+ new Benchmark('Has', false, false, 0, SetHasString, SetSetupString, SetTearDown), |
+ new Benchmark('Delete', false, false, 0, SetDeleteString, SetSetupString, SetTearDown), |
+]); |
+ |
+ |
+var SetObjectBenchmark = new BenchmarkSuite('Set-Object', [1000], [ |
+ new Benchmark('Set', false, false, 0, SetAddObject, SetSetupObjectBase, SetTearDown), |
+ new Benchmark('Has', false, false, 0, SetHasObject, SetSetupObject, SetTearDown), |
+ new Benchmark('Delete', false, false, 0, SetDeleteObject, SetSetupObject, SetTearDown), |
+]); |
+ |
+ |
+var SetIterationBenchmark = new BenchmarkSuite('Set-Iteration', [1000], [ |
+ new Benchmark('ForEach', false, false, 0, SetForEach, SetSetupSmi, SetTearDown), |
]); |
var set; |
-var N = 10; |
-function SetSetup() { |
+function SetSetupSmiBase() { |
+ SetupSmiKeys(); |
set = new Set; |
+} |
+ |
+ |
+function SetSetupSmi() { |
+ SetSetupSmiBase(); |
+ SetAddSmi(); |
+} |
+ |
+ |
+function SetSetupStringBase() { |
+ SetupStringKeys(); |
+ set = new Set; |
+} |
+ |
+ |
+function SetSetupString() { |
+ SetSetupStringBase(); |
+ SetAddString(); |
+} |
+ |
+ |
+function SetSetupObjectBase() { |
+ SetupObjectKeys(); |
+ set = new Set; |
+} |
+ |
+ |
+function SetSetupObject() { |
+ SetSetupObjectBase(); |
+ SetAddObject(); |
+} |
+ |
+ |
+function SetTearDown() { |
+ set = null; |
+} |
+ |
+ |
+function SetAddSmi() { |
for (var i = 0; i < N; i++) { |
- set.add(i); |
+ set.add(keys[i], i); |
} |
} |
-function SetTearDown() { |
- map = null; |
+function SetHasSmi() { |
+ for (var i = 0; i < N; i++) { |
+ if (!set.has(keys[i])) { |
+ throw new Error(); |
+ } |
+ } |
+ for (var i = N; i < 2 * N; i++) { |
+ if (set.has(keys[i])) { |
+ throw new Error(); |
+ } |
+ } |
} |
-function SetAdd() { |
- SetSetup(); |
- SetTearDown(); |
+function SetDeleteSmi() { |
+ // This is run more than once per setup so we will end up deleting items |
+ // more than once. Therefore, we do not the return value of delete. |
+ for (var i = 0; i < N; i++) { |
+ set.delete(keys[i]); |
+ } |
+} |
+ |
+ |
+function SetAddString() { |
+ for (var i = 0; i < N; i++) { |
+ set.add(keys[i], i); |
+ } |
+} |
+ |
+ |
+function SetHasString() { |
+ for (var i = 0; i < N; i++) { |
+ if (!set.has(keys[i])) { |
+ throw new Error(); |
+ } |
+ } |
+ for (var i = N; i < 2 * N; i++) { |
+ if (set.has(keys[i])) { |
+ throw new Error(); |
+ } |
+ } |
+} |
+ |
+ |
+function SetDeleteString() { |
+ // This is run more than once per setup so we will end up deleting items |
+ // more than once. Therefore, we do not the return value of delete. |
+ for (var i = 0; i < N; i++) { |
+ set.delete(keys[i]); |
+ } |
+} |
+ |
+ |
+function SetAddObject() { |
+ for (var i = 0; i < N; i++) { |
+ set.add(keys[i], i); |
+ } |
} |
-function SetHas() { |
+function SetHasObject() { |
for (var i = 0; i < N; i++) { |
- if (!set.has(i)) { |
+ if (!set.has(keys[i])) { |
throw new Error(); |
} |
} |
for (var i = N; i < 2 * N; i++) { |
- if (set.has(i)) { |
+ if (set.has(keys[i])) { |
throw new Error(); |
} |
} |
} |
-function SetDelete() { |
+function SetDeleteObject() { |
// This is run more than once per setup so we will end up deleting items |
// more than once. Therefore, we do not the return value of delete. |
for (var i = 0; i < N; i++) { |
- set.delete(i); |
+ set.delete(keys[i]); |
} |
} |