{"ScriptPreparationCode":"var INITIAL_DATA = { items: {}, count: 0, keys: [] }\r\nvar produce = immer.default\r\n\r\nvar iterationTop = 30;\r\nvar iterationBottom = 70;\r\nvar iterationFull = iterationTop * iterationBottom;","TestCases":[{"Name":"immer many shorts updates","Code":"let data = INITIAL_DATA;\r\n\r\nfor (i = 0; i \u003C iterationFull; i\u002B\u002B) {\r\n data = produce(data, draft =\u003E {\r\n draft.items[i] = { id: i, name: \u0060NEW-ITEM${i}\u0060, value: i }\r\n draft.counter\u002B\u002B\r\n draft.keys.push(\u0060NEW-ITEM${i}\u0060)\r\n })\r\n}","IsDeferred":false},{"Name":"immer one big update","Code":"let data = INITIAL_DATA;\r\n\r\ndata = produce(data, draft =\u003E {\r\n for (i = 0; i \u003C iterationFull; i\u002B\u002B) {\r\n draft.items[i] = { id: i, name: \u0060NEW-ITEM${i}\u0060, value: i }\r\n draft.counter\u002B\u002B\r\n draft.keys.push(\u0060NEW-ITEM${i}\u0060)\r\n }\r\n})","IsDeferred":false},{"Name":"immer balanced data change","Code":"let data = INITIAL_DATA;\r\n\r\nfor (i = 0; i \u003C iterationTop; i\u002B\u002B) {\r\n data = produce(data, draft =\u003E {\r\n for (x = 0; x \u003C iterationBottom; x\u002B\u002B) {\r\n const id = \u0060${i}-${x}\u0060\r\n draft.items[id] = { id: id, name: \u0060NEW-ITEM${id}\u0060, value: id }\r\n draft.count\u002B\u002B\r\n draft.keys.push(\u0060NEW-ITEM${id}\u0060)\r\n }\r\n })\r\n}","IsDeferred":false},{"Name":"immutable ","Code":"let immData = Immutable.Record({\r\n items: Immutable.Map({}),\r\n count: 0,\r\n keys: Immutable.List([])\r\n})();\r\n\r\nfor (i = 0; i \u003C iterationFull; i\u002B\u002B) {\r\n immData = immData.update(\u0022items\u0022, (items) =\u003E {\r\n return items.set(\r\n i, \r\n Immutable.Record({\r\n id: i, \r\n name: \u0060NEW-ITEM${i}\u0060, \r\n value: i \r\n })()\r\n );\r\n });\r\n immData = immData.set(\u0022count\u0022, immData.get(\u0022count\u0022) \u002B 1);\r\n immData = immData.update(\u0022keys\u0022, (keys) =\u003E keys.push(\u0060NEW-ITEM${i}\u0060));\r\n}\r\n","IsDeferred":false},{"Name":"immutable balanced data change","Code":"let immData = Immutable.Record({\r\n items: Immutable.Map({}),\r\n count: 0,\r\n keys: Immutable.List([])\r\n})();\r\n\r\nfor (i = 0; i \u003C iterationTop; i\u002B\u002B) {\r\n immData = immData.update(\u0022items\u0022, (items) =\u003E {\r\n let immItems = items;\r\n\r\n for (x = 0; x \u003C iterationBottom; x\u002B\u002B) {\r\n const id = \u0060${i}-${x}\u0060;\r\n immItems = immItems.set(\r\n id, \r\n Immutable.Record({\r\n id: id, \r\n name: \u0060NEW-ITEM${id}\u0060, \r\n value: id \r\n })()\r\n );\r\n\r\n return immItems;\r\n }\r\n });\r\n}\r\n\r\nfor (i = 0; i \u003C iterationFull; i\u002B\u002B) {\r\n immData = immData.set(\u0022count\u0022, immData.get(\u0022count\u0022) \u002B 1);\r\n immData = immData.update(\u0022keys\u0022, (keys) =\u003E keys.push(\u0060NEW-ITEM${i}\u0060));\r\n}","IsDeferred":false}]}