{"ScriptPreparationCode":"var loops = 1000;\r\nvar items = Array(1000).fill(0);","TestCases":[{"Name":"With Generator","Code":"function* mapGen(iterable, callback) {\r\n for (const item of iterable) {\r\n yield callback(item);\r\n }\r\n}\r\n\r\nlet a1 = mapGen(items, (i) =\u003E i.toString());\r\nlet b1 = mapGen(a1, (i) =\u003E parseInt(i));\r\n\r\nfor (let i = 0; i \u003C loops; \u002B\u002Bi) {\r\n b1 = mapGen(b1, (i) =\u003E i \u002B 1);\r\n}\r\n\r\nconst reuslt = [...b1]","IsDeferred":false},{"Name":"Without Generator","Code":"let a2 = items.map((i) =\u003E i.toString());\r\nlet b2 = a2.map((i) =\u003E parseInt(i));\r\n\r\nfor (let i = 0; i \u003C loops; \u002B\u002Bi) {\r\n b2 = b2.map((i) =\u003E i \u002B 1);\r\n}\r\n\r\nconst result = b2;","IsDeferred":false},{"Name":"With custom generator class","Code":"class ArrayBuilder {\r\n _iterable;\r\n\r\n constructor(iterable) {\r\n this._iterable = iterable ?? [];\r\n }\r\n\r\n toArray() {\r\n return [...this._iterable];\r\n }\r\n\r\n map(\r\n callback\r\n ) {\r\n return new ArrayBuilder(this._map(callback));\r\n }\r\n *_map(callback) {\r\n let index = 0;\r\n for (const value of this._iterable) {\r\n yield callback(value, index\u002B\u002B, this._iterable);\r\n }\r\n }\r\n}\r\n\r\nlet a1 = new ArrayBuilder(items).map((i) =\u003E i.toString());\r\nlet b1 = a1.map((i) =\u003E parseInt(i));\r\n\r\nfor (let i = 0; i \u003C loops; \u002B\u002Bi) {\r\n b1 = b1.map((i) =\u003E i \u002B 1);\r\n}\r\n\r\nconst result = b1.toArray();","IsDeferred":false}]}