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

Unified 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, 2 months 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/js-perf-test/Collections/map.js
diff --git a/test/js-perf-test/Collections/map.js b/test/js-perf-test/Collections/map.js
index b310a719025ee98c201148f51100a177b8a5ca17..4f55798eb7c59fe2b15bedd8e834cc30ae0f84d7 100644
--- a/test/js-perf-test/Collections/map.js
+++ b/test/js-perf-test/Collections/map.js
@@ -3,24 +3,71 @@
// found in the LICENSE file.
-var MapBenchmark = new BenchmarkSuite('Map', [1000], [
- new Benchmark('Set', false, false, 0, MapSet),
- new Benchmark('Has', false, false, 0, MapHas, MapSetup, MapTearDown),
- new Benchmark('Get', false, false, 0, MapGet, MapSetup, MapTearDown),
- new Benchmark('Delete', false, false, 0, MapDelete, MapSetup, MapTearDown),
- new Benchmark('ForEach', false, false, 0, MapForEach, MapSetup, MapTearDown),
+var MapSmiBenchmark = new BenchmarkSuite('Map-Smi', [1000], [
+ new Benchmark('Set', false, false, 0, MapSetSmi, MapSetupSmiBase, MapTearDown),
+ new Benchmark('Has', false, false, 0, MapHasSmi, MapSetupSmi, MapTearDown),
+ new Benchmark('Get', false, false, 0, MapGetSmi, MapSetupSmi, MapTearDown),
+ new Benchmark('Delete', false, false, 0, MapDeleteSmi, MapSetupSmi, MapTearDown),
+]);
+
+
+var MapStringBenchmark = new BenchmarkSuite('Map-String', [1000], [
+ new Benchmark('Set', false, false, 0, MapSetString, MapSetupStringBase, MapTearDown),
+ new Benchmark('Has', false, false, 0, MapHasString, MapSetupString, MapTearDown),
+ new Benchmark('Get', false, false, 0, MapGetString, MapSetupString, MapTearDown),
+ new Benchmark('Delete', false, false, 0, MapDeleteString, MapSetupString, MapTearDown),
+]);
+
+
+var MapObjectBenchmark = new BenchmarkSuite('Map-Object', [1000], [
+ new Benchmark('Set', false, false, 0, MapSetObject, MapSetupObjectBase, MapTearDown),
+ new Benchmark('Has', false, false, 0, MapHasObject, MapSetupObject, MapTearDown),
+ new Benchmark('Get', false, false, 0, MapGetObject, MapSetupObject, MapTearDown),
+ new Benchmark('Delete', false, false, 0, MapDeleteObject, MapSetupObject, MapTearDown),
+]);
+
+
+var MapIterationBenchmark = new BenchmarkSuite('Map-Iteration', [1000], [
+ new Benchmark('ForEach', false, false, 0, MapForEach, MapSetupSmi, MapTearDown),
]);
var map;
-var N = 10;
-function MapSetup() {
+function MapSetupSmiBase() {
+ SetupSmiKeys();
+ map = new Map;
+}
+
+
+function MapSetupSmi() {
+ MapSetupSmiBase();
+ MapSetSmi();
+}
+
+
+function MapSetupStringBase() {
+ SetupStringKeys();
+ map = new Map;
+}
+
+
+function MapSetupString() {
+ MapSetupStringBase();
+ MapSetString();
+}
+
+
+function MapSetupObjectBase() {
+ SetupObjectKeys();
map = new Map;
- for (var i = 0; i < N; i++) {
- map.set(i, i);
- }
+}
+
+
+function MapSetupObject() {
+ MapSetupObjectBase();
+ MapSetObject();
}
@@ -29,45 +76,134 @@ function MapTearDown() {
}
-function MapSet() {
- MapSetup();
- MapTearDown();
+function MapSetSmi() {
+ for (var i = 0; i < N; i++) {
+ map.set(keys[i], i);
+ }
+}
+
+
+function MapHasSmi() {
+ for (var i = 0; i < N; i++) {
+ if (!map.has(keys[i])) {
+ throw new Error();
+ }
+ }
+ for (var i = N; i < 2 * N; i++) {
+ if (map.has(keys[i])) {
+ throw new Error();
+ }
+ }
+}
+
+
+function MapGetSmi() {
+ for (var i = 0; i < N; i++) {
+ if (map.get(keys[i]) !== i) {
+ throw new Error();
+ }
+ }
+ for (var i = N; i < 2 * N; i++) {
+ if (map.get(keys[i]) !== undefined) {
+ throw new Error();
+ }
+ }
+}
+
+
+function MapDeleteSmi() {
+ // 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++) {
+ map.delete(keys[i]);
+ }
+}
+
+
+function MapSetString() {
+ for (var i = 0; i < N; i++) {
+ map.set(keys[i], i);
+ }
+}
+
+
+function MapHasString() {
+ for (var i = 0; i < N; i++) {
+ if (!map.has(keys[i])) {
+ throw new Error();
+ }
+ }
+ for (var i = N; i < 2 * N; i++) {
+ if (map.has(keys[i])) {
+ throw new Error();
+ }
+ }
+}
+
+
+function MapGetString() {
+ for (var i = 0; i < N; i++) {
+ if (map.get(keys[i]) !== i) {
+ throw new Error();
+ }
+ }
+ for (var i = N; i < 2 * N; i++) {
+ if (map.get(keys[i]) !== undefined) {
+ throw new Error();
+ }
+ }
+}
+
+
+function MapDeleteString() {
+ // 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++) {
+ map.delete(keys[i]);
+ }
+}
+
+
+function MapSetObject() {
+ for (var i = 0; i < N; i++) {
+ map.set(keys[i], i);
+ }
}
-function MapHas() {
+function MapHasObject() {
for (var i = 0; i < N; i++) {
- if (!map.has(i)) {
+ if (!map.has(keys[i])) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
- if (map.has(i)) {
+ if (map.has(keys[i])) {
throw new Error();
}
}
}
-function MapGet() {
+function MapGetObject() {
for (var i = 0; i < N; i++) {
- if (map.get(i) !== i) {
+ if (map.get(keys[i]) !== i) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
- if (map.get(i) !== undefined) {
+ if (map.get(keys[i]) !== undefined) {
throw new Error();
}
}
}
-function MapDelete() {
+function MapDeleteObject() {
// 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++) {
- map.delete(i);
+ map.delete(keys[i]);
}
}
« 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