{"ScriptPreparationCode":"class Point {\r\n constructor(x, y) {\r\n this.x = x;\r\n this.y = y;\r\n this.health = 100;\r\n }\r\n\r\n updatePosition() {\r\n this.x \u002B= 2;\r\n this.y \u002B= 2;\r\n }\r\n\r\n takeDamage() {\r\n this.health -= 1;\r\n }\r\n}\r\n\r\nvar pointClasses = [];\r\n\r\nvar pointCompList = [];\r\nvar healthCompList = [];\r\n\r\nconst entityCount = 1000000;\r\n\r\nfor (let i = 0; i \u003C entityCount; i\u002B\u002B) {\r\n pointClasses.push(new Point(0, 0));\r\n pointCompList.push({\r\n x: 0,\r\n y: 0\r\n });\r\n healthCompList.push(100);\r\n}","TestCases":[{"Name":"OO-style","Code":"for (let i = 0; i \u003C entityCount; i\u002B\u002B) {\r\n const pointClass = pointClasses[i];\r\n pointClass.updatePosition();\r\n pointClass.takeDamage();\r\n pointClass.updatePosition();\r\n pointClass.takeDamage();\r\n};","IsDeferred":false},{"Name":"ECS-style","Code":"function updatePosition(i)\r\n{\r\n const pointComp = pointCompList[i];\r\n pointComp.x \u002B= 2;\r\n pointComp.y \u002B= 2;\r\n}\r\nfunction takeDamage(i)\r\n{\r\n healthCompList[i] -= 1;\r\n}\r\nfor (let i = 0; i \u003C entityCount; i\u002B\u002B) {\r\n updatePosition(i);\r\n updatePosition(i);\r\n}\r\nfor (let i = 0; i \u003C entityCount; i\u002B\u002B) {\r\n takeDamage(i);\r\n takeDamage(i);\r\n}","IsDeferred":false}]}