{"ScriptPreparationCode":"const counter = 10000;\r\n\r\nconst map = new Map();\r\nconst hashMap = new Map();\r\nconst hashMapStr = new Map();\r\n\r\nconst object = {};\r\nconst hashObj = {};\r\nconst hashObjStr = {};\r\n\r\nconst paths = [\r\n \u0022/a/\u0022,\r\n \u0022/a/aaa/\u0022,\r\n \u0022/a/aaa/aaaaaaaaa/\u0022,\r\n \u0022/a/aaa/aaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/a/aaa/aaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/a/aaa/aaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/\u0022\r\n];\r\n\r\nconst keyToFind = \u0022/a/aaa/aaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/a/aaa/aaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/a/aaa/aaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/23\u0022\r\nconst keyToFindHash = hashCode(keyToFind)\r\nconst keyToFindHashStr = keyToFindHash.toString()\r\n\r\nwindow.counter = counter\r\n\r\nwindow.map = map\r\nwindow.hashMap = hashMap\r\nwindow.hashMapStr = hashMapStr\r\n\r\nwindow.object = object\r\nwindow.hashObj = hashObj\r\nwindow.hashObjStr = hashObjStr\r\n\r\nwindow.paths = paths\r\n\r\nfor (const path of paths) {\r\n\tfor (let i = 0; i \u003C counter; i\u002B\u002B) {\r\n \tlet key = \u0060${path}/${i}\u0060;\r\n \tlet value = \u0060${i*23} \u003C----\u003E ${path}/${i}\u0060;\r\n let hash = hashCode(key);\r\n let hashStr = hash.toString();\r\n\r\n\t map.set(key, value)\r\n hashMap.set(hash, value)\r\n hashMapStr.set(hashStr, value)\r\n\r\n \tobject[key] = value\r\n hashObj[hash] = value\r\n hashObjStr[hashStr] = value\r\n\t}\r\n}\r\n\r\nfunction hashCode(str) {\r\n let hash = 0;\r\n\r\n \tfor (let i = 0, len = str.length; i \u003C len; i\u002B\u002B) {\r\n let chr = str.charCodeAt(i);\r\n hash = (hash \u003C\u003C 5) - hash \u002B chr;\r\n hash |= 0; // Convert to 32bit integer\r\n }\r\n\r\n\treturn hash;\r\n}\r\n\r\nfunction hashCodeStr(str) {\r\n let hash = hashCode(str)\r\n\r\n return hash.toString();\r\n}\r\n","TestCases":[{"Name":"Map","Code":"let a = map.get(keyToFind)","IsDeferred":false},{"Name":"Map (with hashCode)","Code":"let a = hashMap.get(keyToFindHash)","IsDeferred":false},{"Name":"Map (with hashCodeStr)","Code":"let a = hashMapStr.get(keyToFindHashStr)","IsDeferred":false},{"Name":"Object","Code":"let a = object[keyToFind]","IsDeferred":false},{"Name":"Object (with hashCode)","Code":"let a = hashObj[keyToFindHash]","IsDeferred":false},{"Name":"Object (with hashCodeStr)","Code":"let a = hashObjStr[keyToFindHashStr]","IsDeferred":false}]}