{"ScriptPreparationCode":"class Foobar {\r\n constructor () {\r\n this.n = 1\r\n this.funcs = [this.foo, this.bar, this.baz]\r\n this.funcMap = new Map(this.funcs.map((func, i) =\u003E [i, func]))\r\n this.props = [\u0027foo\u0027, \u0027bar\u0027, \u0027baz\u0027]\r\n this.propMap = new Map(this.props.map((prop, i) =\u003E [i, prop]))\r\n }\r\n \r\n foo () {\r\n this.n *= 2\r\n }\r\n \r\n bar () {\r\n this.n *= 3\r\n }\r\n \r\n baz () {\r\n this.n /= 4\r\n }\r\n}\r\n\r\nvar foobar = new Foobar()","TestCases":[{"Name":"call (Array)","Code":"for (let i = 0; i \u003C 100; i \u002B= 1) {\r\n foobar.funcs[i % 3].call(foobar)\r\n}","IsDeferred":false},{"Name":"call (Map)","Code":"for (let i = 0; i \u003C 100; i \u002B= 1) {\r\n foobar.funcMap.get(i % 3).call(foobar)\r\n}","IsDeferred":false},{"Name":"prop (Array)","Code":"for (let i = 0; i \u003C 100; i \u002B= 1) {\r\n foobar[foobar.props[i % 3]]()\r\n}","IsDeferred":false},{"Name":"prop (Map)","Code":"for (let i = 0; i \u003C 100; i \u002B= 1) {\r\n foobar[foobar.propMap.get(i % 3)]()\r\n}","IsDeferred":false}]}