{"ScriptPreparationCode":"class ValueHolder {\r\n #value;\r\n get value() {return this.#value;}\r\n set value(v) {this.#value = v;}\r\n}\r\nconst holder = new ValueHolder();\r\n\r\nfunction getValue1(x) {\r\n return holder.value;\r\n}\r\nfunction wrappedValue1(x) { return getValue1(x); }\r\n\r\nfunction getValue2(x, anyHolder=holder) {\r\n return anyHolder.value;\r\n}\r\nfunction wrappedValue2(x) { return getValue2(x); }\r\n\r\nfunction getValue3(x, anyHolder=holder) {\r\n const propName = \u0022value\u0022;\r\n return anyHolder[propName];\r\n}\r\nfunction wrappedValue3(x) { return getValue3(x); }\r\n\r\nfunction getValue4(x, anyHolder=holder, propName=\u0022value\u0022) {\r\n return anyHolder[propName];\r\n}\r\nfunction wrappedValue4(x) { return getValue1(4); }\r\n \r\nfunction benchmark(func) {\r\n let x; \r\n for (let i = 0; i \u003C 1000000; i\u002B\u002B) {\r\n x = func(i);\r\n }\r\n return x;\r\n}","TestCases":[{"Name":"Static object, static property","Code":"benchmark(wrappedValue1)","IsDeferred":false},{"Name":"Dynamic object, static property","Code":"benchmark(wrappedValue2)","IsDeferred":false},{"Name":"Dynamic object, const property","Code":"benchmark(wrappedValue3)","IsDeferred":false},{"Name":"Dynamic object, dynamic property","Code":"benchmark(wrappedValue4)","IsDeferred":false}]}