{"ScriptPreparationCode":"function SlowMap() {\r\n this._keys = [];\r\n this._values = [];\r\n}\r\n\r\nSlowMap.prototype = {\r\n set: function(key, value) {\r\n const index = this._keys.indexOf(key);\r\n if (index !== -1) {\r\n this._values[index] = value;\r\n } else {\r\n this._keys.push(key);\r\n this._values.push(value);\r\n }\r\n },\r\n \r\n get: function(key) {\r\n const index = this._keys.indexOf(key);\r\n if (index !== -1) {\r\n return this._values[index];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n};\r\n\r\nvar OBJECT_COUNT = 500;\r\nvar PROPERTY_COUNT = 10;\r\nvar OBJECTS = [];\r\n\r\nvar slowMapByObj = new SlowMap();\r\nvar nativeMapByObj = new Map();\r\nvar nativeWeakMapByObj = new WeakMap();\r\nvar nativeMapByJson = new Map();\r\nvar objectMapByJson = {};\r\n\r\nfor (let i = 0; i \u003C OBJECT_COUNT; \u002B\u002Bi) {\r\n var obj = {};\r\n \r\n for (let j = 0; j \u003C PROPERTY_COUNT; \u002B\u002Bj) {\r\n obj[i \u002B \u0022|\u0022 \u002B j] = i * PROPERTY_COUNT \u002B j;\r\n }\r\n \r\n OBJECTS.push(obj);\r\n slowMapByObj.set(obj, i);\r\n nativeMapByObj.set(obj, i);\r\n nativeWeakMapByObj.set(obj, i);\r\n nativeMapByJson.set(JSON.stringify(obj), i);\r\n objectMapByJson[JSON.stringify(obj)] = i;\r\n}\r\n\r\nvar testLoopCount = 0;\r\n","TestCases":[{"Name":"Polyfill Map by Object","Code":"var result = slowMapByObj.get(OBJECTS[testLoopCount\u002B\u002B % OBJECT_COUNT]);","IsDeferred":false},{"Name":"Native Map by Object","Code":"var result = nativeMapByObj.get(OBJECTS[testLoopCount\u002B\u002B % OBJECT_COUNT]);","IsDeferred":false},{"Name":"Native Map by JSON","Code":"var result = nativeMapByJson.get(JSON.stringify(OBJECTS[testLoopCount\u002B\u002B % OBJECT_COUNT]));","IsDeferred":false},{"Name":"Object by JSON","Code":"var result = objectMapByJson[JSON.stringify(OBJECTS[testLoopCount\u002B\u002B % OBJECT_COUNT])];","IsDeferred":false},{"Name":"Native WeakMap by Object","Code":"var result = nativeWeakMapByObj.get(OBJECTS[testLoopCount\u002B\u002B % OBJECT_COUNT]);","IsDeferred":false}]}