diff options
Diffstat (limited to 'deps/v8/test/js-perf-test/Collections/map.js')
-rw-r--r-- | deps/v8/test/js-perf-test/Collections/map.js | 116 |
1 files changed, 101 insertions, 15 deletions
diff --git a/deps/v8/test/js-perf-test/Collections/map.js b/deps/v8/test/js-perf-test/Collections/map.js index ee0899189d..39e97552b9 100644 --- a/deps/v8/test/js-perf-test/Collections/map.js +++ b/deps/v8/test/js-perf-test/Collections/map.js @@ -10,7 +10,6 @@ var MapSmiBenchmark = new BenchmarkSuite('Map-Smi', [1000], [ 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), @@ -18,7 +17,6 @@ var MapStringBenchmark = new BenchmarkSuite('Map-String', [1000], [ 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), @@ -26,60 +24,87 @@ var MapObjectBenchmark = new BenchmarkSuite('Map-Object', [1000], [ new Benchmark('Delete', false, false, 0, MapDeleteObject, MapSetupObject, MapTearDown), ]); +var MapDoubleBenchmark = new BenchmarkSuite('Map-Double', [1000], [ + new Benchmark('Set', false, false, 0, MapSetDouble, MapSetupDoubleBase, MapTearDown), + new Benchmark('Has', false, false, 0, MapHasDouble, MapSetupDouble, MapTearDown), + new Benchmark('Get', false, false, 0, MapGetDouble, MapSetupDouble, MapTearDown), + new Benchmark('Delete', false, false, 0, MapDeleteDouble, MapSetupDouble, MapTearDown), +]); + +var MapObjectLargeBenchmark = new BenchmarkSuite('Map-Object-Set-Get-Large', [1e7], [ + new Benchmark('Set-Get', false, false, 0, MapSetGetObjectLarge, + MapSetupObjectBaseLarge, MapTearDown), +]); var MapIterationBenchmark = new BenchmarkSuite('Map-Iteration', [1000], [ new Benchmark('ForEach', false, false, 0, MapForEach, MapSetupSmi, MapTearDown), ]); - var MapIterationBenchmark = new BenchmarkSuite('Map-Iterator', [1000], [ new Benchmark('Iterator', false, false, 0, MapIterator, MapSetupSmi, MapTearDown), ]); +var MapConstructorBenchmark = new BenchmarkSuite('Map-Constructor', [1000], [ + new Benchmark('Smi', false, false, 0, MapConstructorSmi, SetupSmiKeyValuePairs, MapTearDown), + new Benchmark('String', false, false, 0, MapConstructorString, SetupStringKeyValuePairs, MapTearDown), + new Benchmark('Object', false, false, 0, MapConstructorObject, SetupObjectKeyValuePairs, MapTearDown), + new Benchmark('Double', false, false, 0, MapConstructorDouble, SetupDoubleKeyValuePairs, MapTearDown), +]); var map; - 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; } +function MapSetupObjectBaseLarge() { + SetupObjectKeys(2 * LargeN); + map = new Map; +} function MapSetupObject() { MapSetupObjectBase(); MapSetObject(); } +function MapSetupDoubleBase() { + SetupDoubleKeys(); + map = new Map; +} + +function MapSetupDouble() { + MapSetupDoubleBase(); + MapSetDouble(); +} function MapTearDown() { map = null; } +function MapConstructorSmi() { + map = new Map(keyValuePairs); +} function MapSetSmi() { for (var i = 0; i < N; i++) { @@ -87,7 +112,6 @@ function MapSetSmi() { } } - function MapHasSmi() { for (var i = 0; i < N; i++) { if (!map.has(keys[i])) { @@ -101,7 +125,6 @@ function MapHasSmi() { } } - function MapGetSmi() { for (var i = 0; i < N; i++) { if (map.get(keys[i]) !== i) { @@ -125,13 +148,16 @@ function MapDeleteSmi() { } +function MapConstructorString() { + map = new Map(keyValuePairs); +} + 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])) { @@ -159,7 +185,6 @@ function MapGetString() { } } - 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. @@ -169,13 +194,16 @@ function MapDeleteString() { } +function MapConstructorObject() { + map = new Map(keyValuePairs); +} + function MapSetObject() { for (var i = 0; i < N; i++) { map.set(keys[i], i); } } - function MapHasObject() { for (var i = 0; i < N; i++) { if (!map.has(keys[i])) { @@ -189,7 +217,6 @@ function MapHasObject() { } } - function MapGetObject() { for (var i = 0; i < N; i++) { if (map.get(keys[i]) !== i) { @@ -203,6 +230,21 @@ function MapGetObject() { } } +function MapSetGetObjectLarge() { + for (var i = 0; i < LargeN; i++) { + map.set(keys[i * 2], i); + } + for (var i = 0; i < LargeN; i++) { + if (map.get(keys[i * 2]) !== i) { + throw new Error(); + } + } + for (var i = N; i < 2 * LargeN; i++) { + if (map.get(keys[i * 2 + 1]) !== undefined) { + throw new Error(); + } + } +} function MapDeleteObject() { // This is run more than once per setup so we will end up deleting items @@ -213,6 +255,51 @@ function MapDeleteObject() { } +function MapConstructorDouble() { + map = new Map(keyValuePairs); +} + +function MapSetDouble() { + for (var i = 0; i < N; i++) { + map.set(keys[i], i); + } +} + +function MapHasDouble() { + 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 MapGetDouble() { + 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 MapDeleteDouble() { + // 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 MapForEach() { map.forEach(function(v, k) { if (v !== k) { @@ -221,7 +308,6 @@ function MapForEach() { }); } - function MapIterator() { var result = 0; for (const v of map.values()) result += v; |