{"ScriptPreparationCode":"\r\nfunction createBasicObject() {\r\n return { value: 0, dirty: false }\r\n}\r\n\r\nfunction createSetterObject() {\r\n const object = {\r\n value: 0,\r\n dirty: false,\r\n\r\n setValue(value) {\r\n if (value !== object.value) {\r\n object.value = value;\r\n object.dirty = true;\r\n }\r\n }\r\n }\r\n return object\r\n}\r\n\r\nfunction createAccessorObject() {\r\n let _value = 0;\r\n\r\n const object = {\r\n value: _value,\r\n dirty: false,\r\n };\r\n\r\n Object.defineProperty(object, \u0022value\u0022, {\r\n get() {\r\n return _value;\r\n },\r\n set(value) {\r\n if (value !== _value) {\r\n _value = value;\r\n this.dirty = true;\r\n }\r\n },\r\n });\r\n\r\n return object;\r\n}\r\n\r\nclass BasicClass {\r\n value = 0;\r\n dirty = false;\r\n}\r\n\r\nclass SetterClass {\r\n value = 0;\r\n dirty = false;\r\n\r\n setValue(value) {\r\n if (value !== this.value) {\r\n this.value = value;\r\n this.dirty = true;\r\n }\r\n }\r\n}\r\n\r\nclass AccessorClass {\r\n dirty = false;\r\n\r\n _value = 0;\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(value) {\r\n if (value !== this._value) {\r\n this._value = value;\r\n this.dirty = true;\r\n }\r\n }\r\n}\r\n\r\nconst COUNT = 100\r\n\r\nconst basicObjects = new Array(COUNT)\r\nfor (let i=0; i\u003C100; i\u002B\u002B) {\r\n basicObjects[i] = createBasicObject()\r\n}\r\n\r\nconst setterObjects = new Array(COUNT)\r\nfor (let i=0; i\u003C100; i\u002B\u002B) {\r\n setterObjects[i] = createSetterObject()\r\n}\r\n\r\nconst accessorObjects = new Array(COUNT)\r\nfor (let i=0; i\u003C100; i\u002B\u002B) {\r\n accessorObjects[i] = createAccessorObject()\r\n}\r\n\r\nconst basicClasses = new Array(COUNT)\r\nfor (let i=0; i\u003C100; i\u002B\u002B) {\r\n basicClasses[i] = new BasicClass()\r\n}\r\n\r\nconst setterClasses = new Array(COUNT)\r\nfor (let i=0; i\u003C100; i\u002B\u002B) {\r\n setterClasses[i] = new SetterClass()\r\n}\r\n\r\nconst accessorClasses = new Array(COUNT)\r\nfor (let i=0; i\u003C100; i\u002B\u002B) {\r\n accessorClasses[i] = new AccessorClass()\r\n}","TestCases":[{"Name":"Creation of basic object","Code":"const results = new Array(COUNT)\r\nfor (let i=0; i\u003C100; i\u002B\u002B) {\r\n results[i] = createBasicObject()\r\n}","IsDeferred":false},{"Name":"Creation of setter object","Code":"const results = new Array(COUNT)\r\nfor (let i=0; i\u003C100; i\u002B\u002B) {\r\n results[i] = createSetterObject()\r\n}","IsDeferred":false},{"Name":"Creation of accessor object","Code":"const results = new Array(COUNT)\r\nfor (let i=0; i\u003C100; i\u002B\u002B) {\r\n results[i] = createAccessorObject()\r\n}","IsDeferred":false},{"Name":"Creation of basic class","Code":"const results = new Array(COUNT)\r\nfor (let i=0; i\u003C100; i\u002B\u002B) {\r\n results[i] = new BasicClass()\r\n}","IsDeferred":false},{"Name":"Creation of setter class","Code":"const results = new Array(COUNT)\r\nfor (let i=0; i\u003C100; i\u002B\u002B) {\r\n results[i] = new SetterClass()\r\n}\r\n","IsDeferred":false},{"Name":"Creation of accessor class","Code":"const results = new Array(COUNT)\r\nfor (let i=0; i\u003C100; i\u002B\u002B) {\r\n results[i] = new AccessorClass()\r\n}","IsDeferred":false},{"Name":"Increment basic object value","Code":"for (let i=0; i\u003C100; i\u002B\u002B) {\r\n obj = basicObjects[i]\r\n obj.value\u002B\u002B\r\n obj.dirty = true\r\n}","IsDeferred":false},{"Name":"Increment setter object value","Code":"for (let i=0; i\u003C100; i\u002B\u002B) {\r\n obj = setterObjects[i]\r\n obj.setValue(obj.value \u002B 1)\r\n}","IsDeferred":false},{"Name":"Increment accessor object value","Code":"for (let i=0; i\u003C100; i\u002B\u002B) {\r\n accessorObjects[i].value\u002B\u002B\r\n}","IsDeferred":false},{"Name":"Increment basic class value","Code":"for (let i=0; i\u003C100; i\u002B\u002B) {\r\n obj = basicClasses[i]\r\n obj.value\u002B\u002B\r\n obj.dirty = true\r\n}","IsDeferred":false},{"Name":"Increment setter class value","Code":"for (let i=0; i\u003C100; i\u002B\u002B) {\r\n obj = setterClasses[i]\r\n obj.setValue(obj.value \u002B 1)\r\n}","IsDeferred":false},{"Name":"Increment accessor class value","Code":"for (let i=0; i\u003C100; i\u002B\u002B) {\r\n accessorClasses[i].value\u002B\u002B\r\n}","IsDeferred":false}]}