{"ScriptPreparationCode":"var path = (keys, is = \u0022return \u0022 \u002B keys.reduce((values, key) =\u003E values \u002B \u0022[\u0027\u0022\u002B key \u002B\u0022\u0027]\u0022, \u0022value\u0022)) =\u003E new Function(\u0022value\u0022, is)\r\nvar path2 = keys =\u003E value =\u003E keys.reduce((value, key) =\u003E value[key], value);\r\nvar prop = key =\u003E value =\u003E value[key];\r\nvar identity = value =\u003E value;\r\nvar path3 = keys =\u003E keys.reduce((call, key) =\u003E value =\u003E prop(key)(call(value)), identity);\r\nvar keys = Array.from({ length: 100 }, (_, i) =\u003E \u0022a\u0022 \u002B i);\r\nvar i = 65535;\r\nvar test = {};\r\nvar tmp;\r\nwhile(i--) {\r\n tmp = test;\r\n test = { [\u0022a\u0022 \u002B i]: tmp };\r\n}\r\nvar run1 = path(keys);\r\nvar run2 = path2(keys);\r\nvar run3 = path3(keys);\r\ni = 1000000;\r\nwhile (i--) {\r\n\tidentity(i);\r\n\tprop(i)([]);\r\n\trun1(Object.setPrototypeOf({ i }, test));\r\n\trun2(Object.setPrototypeOf({ i }, test));\r\n\trun3(Object.setPrototypeOf({ i }, test));\r\n}","TestCases":[{"Name":"new f","Code":"run1(test);","IsDeferred":false},{"Name":"reduce","Code":"run2(test);","IsDeferred":false},{"Name":"reduce recalculate","Code":"run3(test);","IsDeferred":false}]}