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

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: 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..1bba20906dc6ab1ebbe1ffa7161312a89ab39d85 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, MapSet, MapSetupSmiBase, MapTearDown),
Dmitry Lomov (no reviews) 2014/10/29 10:02:25 In this perf test, you reuse MapSet/MapHas/MapGet/
+ new Benchmark('Has', false, false, 0, MapHas, MapSetupSmi, MapTearDown),
+ new Benchmark('Get', false, false, 0, MapGet, MapSetupSmi, MapTearDown),
+ new Benchmark('Delete', false, false, 0, MapDelete, MapSetupSmi, MapTearDown),
+]);
+
+
+var MapStringBenchmark = new BenchmarkSuite('Map-String', [1000], [
+ new Benchmark('Set', false, false, 0, MapSet, MapSetupStringBase, MapTearDown),
+ new Benchmark('Has', false, false, 0, MapHas, MapSetupString, MapTearDown),
+ new Benchmark('Get', false, false, 0, MapGet, MapSetupString, MapTearDown),
+ new Benchmark('Delete', false, false, 0, MapDelete, MapSetupString, MapTearDown),
+]);
+
+
+var MapObjectBenchmark = new BenchmarkSuite('Map-Object', [1000], [
+ new Benchmark('Set', false, false, 0, MapSet, MapSetupObjectBase, MapTearDown),
+ new Benchmark('Has', false, false, 0, MapHas, MapSetupObject, MapTearDown),
+ new Benchmark('Get', false, false, 0, MapGet, MapSetupObject, MapTearDown),
+ new Benchmark('Delete', false, false, 0, MapDelete, 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;
- for (var i = 0; i < N; i++) {
- map.set(i, i);
- }
+}
+
+
+function MapSetupSmi() {
+ MapSetupSmiBase();
+ MapSet();
+}
+
+
+function MapSetupStringBase() {
+ SetupStringKeys();
+ map = new Map;
+}
+
+
+function MapSetupString() {
+ MapSetupStringBase();
+ MapSet();
+}
+
+
+function MapSetupObjectBase() {
+ SetupObjectKeys();
+ map = new Map;
+}
+
+
+function MapSetupObject() {
+ MapSetupObjectBase();
+ MapSet();
}
@@ -30,19 +77,20 @@ function MapTearDown() {
function MapSet() {
- MapSetup();
- MapTearDown();
+ for (var i = 0; i < N; i++) {
+ map.set(keys[i], i);
+ }
}
function MapHas() {
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();
}
}
@@ -51,12 +99,12 @@ function MapHas() {
function MapGet() {
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();
}
}
@@ -67,7 +115,7 @@ function MapDelete() {
// 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