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