From 868cac281317c5831337e0ed0a69893b16d3150a Mon Sep 17 00:00:00 2001 From: Timothy Younger Date: Wed, 18 Oct 2017 10:30:46 -0700 Subject: [PATCH 1/4] Adds perf tests for `Map.merge` and `Map.mergeDeep`. --- perf/Map.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/perf/Map.js b/perf/Map.js index cf333adeb8..6218a65436 100644 --- a/perf/Map.js +++ b/perf/Map.js @@ -139,4 +139,39 @@ describe('Map', function () { }); + describe('merge an object', function () { + + [2, 8, 32, 1024].forEach(size => { + const obj = {}; + for (let ii = 0; ii < size; ii++) { + obj['x' + ii] = ii; + } + + const m1 = Immutable.Map(obj); + const m2 = Immutable.Map(obj); + + it('of ' + size, () => { + m1.merge(m2); + }); + }); + }); + + describe('mergeDeep an object', function () { + + [2, 8, 32, 1024].forEach(size => { + const obj = {}; + for (let ii = 0; ii < size; ii++) { + obj['x' + ii] = {}; + obj['x' + ii]['y' + ii] = ii; + } + + const m1 = Immutable.Map(obj); + const m2 = Immutable.Map(obj); + + it('of ' + size, () => { + m1.mergeDeep(m2); + }); + }); + }); + }); From 15866a549a4084aa7071b022461d5f9b49b6f68a Mon Sep 17 00:00:00 2001 From: Timothy Younger Date: Wed, 18 Oct 2017 13:25:40 -0700 Subject: [PATCH 2/4] Per review, updated descriptions, and test merges different Map instances (and content). --- perf/Map.js | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/perf/Map.js b/perf/Map.js index 6218a65436..7b74dc0324 100644 --- a/perf/Map.js +++ b/perf/Map.js @@ -139,37 +139,42 @@ describe('Map', function () { }); - describe('merge an object', function () { + describe('merge a map', function () { [2, 8, 32, 1024].forEach(size => { - const obj = {}; + const objX = {}; + const objY = {}; for (let ii = 0; ii < size; ii++) { - obj['x' + ii] = ii; + objX['x' + ii] = ii; + objY['y' + ii] = ii; } - const m1 = Immutable.Map(obj); - const m2 = Immutable.Map(obj); + const mapX = Immutable.Map(objX); + const mapY = Immutable.Map(objY); it('of ' + size, () => { - m1.merge(m2); + mapX.merge(mapY); }); }); }); - describe('mergeDeep an object', function () { + describe('mergeDeep a map', function () { [2, 8, 32, 1024].forEach(size => { - const obj = {}; + const objX = {}; + const objY = {}; for (let ii = 0; ii < size; ii++) { - obj['x' + ii] = {}; - obj['x' + ii]['y' + ii] = ii; + objX['x' + ii] = {}; + objX['x' + ii]['z' + ii] = ii; + objY['y' + ii] = {}; + objY['y' + ii]['z' + ii] = ii; } - const m1 = Immutable.Map(obj); - const m2 = Immutable.Map(obj); + const mapX = Immutable.Map(objX); + const mapY = Immutable.Map(objY); it('of ' + size, () => { - m1.mergeDeep(m2); + mapX.merge(mapY); }); }); }); From 9834f52ac7ad64e1448f8d2f6c6ad8cf157e90b7 Mon Sep 17 00:00:00 2001 From: Lee Byron Date: Wed, 18 Oct 2017 14:39:13 -0700 Subject: [PATCH 3/4] Ensure merge has differing values during perf test --- perf/Map.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/perf/Map.js b/perf/Map.js index d8b2bbed0d..41da879ef7 100644 --- a/perf/Map.js +++ b/perf/Map.js @@ -126,38 +126,38 @@ describe('Map', function() { describe('merge a map', () => { [2, 8, 32, 1024].forEach(size => { - const objX = {}; - const objY = {}; + const obj1 = {}; + const obj2 = {}; for (let ii = 0; ii < size; ii++) { - objX['x' + ii] = ii; - objY['y' + ii] = ii; + obj1['k' + ii] = '1_' + ii; + obj2['k' + ii] = '2_' + ii; } - const mapX = Immutable.Map(objX); - const mapY = Immutable.Map(objY); + const map1 = Immutable.Map(obj1); + const map2 = Immutable.Map(obj2); it('of ' + size, () => { - mapX.merge(mapY); + map1.merge(map2); }); }); }); describe('mergeDeep a map', () => { [2, 8, 32, 1024].forEach(size => { - const objX = {}; - const objY = {}; + const obj1 = {}; + const obj2 = {}; for (let ii = 0; ii < size; ii++) { - objX['x' + ii] = {}; - objX['x' + ii]['z' + ii] = ii; - objY['y' + ii] = {}; - objY['y' + ii]['z' + ii] = ii; + obj1['k' + ii] = {}; + obj1['k' + ii]['k' + ii] = '1_' + ii; + obj2['k' + ii] = {}; + obj2['k' + ii]['k' + ii] = '2_' + ii; } - const mapX = Immutable.Map(objX); - const mapY = Immutable.Map(objY); + const map1 = Immutable.Map(obj1); + const map2 = Immutable.Map(obj2); it('of ' + size, () => { - mapX.merge(mapY); + map1.merge(map2); }); }); }); From b8bb93c4ee12180c40f92b29194532df72db8d5d Mon Sep 17 00:00:00 2001 From: Lee Byron Date: Wed, 18 Oct 2017 14:41:49 -0700 Subject: [PATCH 4/4] Remove mergeDeep() It wasn't actually running mergeDeep() and as a perf test, it's a thin composition atop merge() anyhow. --- perf/Map.js | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/perf/Map.js b/perf/Map.js index 41da879ef7..c7cdc96f6a 100644 --- a/perf/Map.js +++ b/perf/Map.js @@ -141,24 +141,4 @@ describe('Map', function() { }); }); }); - - describe('mergeDeep a map', () => { - [2, 8, 32, 1024].forEach(size => { - const obj1 = {}; - const obj2 = {}; - for (let ii = 0; ii < size; ii++) { - obj1['k' + ii] = {}; - obj1['k' + ii]['k' + ii] = '1_' + ii; - obj2['k' + ii] = {}; - obj2['k' + ii]['k' + ii] = '2_' + ii; - } - - const map1 = Immutable.Map(obj1); - const map2 = Immutable.Map(obj2); - - it('of ' + size, () => { - map1.merge(map2); - }); - }); - }); });