| 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]);
|
| }
|
| }
|
|
|
|
|