{"ScriptPreparationCode":"var N = 10000;\r\n\r\nvar STATUSES = [\r\n \u0027draft\u0027, \u0027pending\u0027, \u0027queued\u0027, \u0027scheduled\u0027, \u0027running\u0027,\r\n \u0027paused\u0027, \u0027resumed\u0027, \u0027retrying\u0027, \u0027succeeded\u0027, \u0027failed\u0027,\r\n \u0027cancelled\u0027, \u0027expired\u0027, \u0027archived\u0027, \u0027deleted\u0027, \u0027blocked\u0027,\r\n \u0027approved\u0027, \u0027rejected\u0027, \u0027review\u0027, \u0027published\u0027, \u0027unknown\u0027\r\n];\r\n\r\nvar DEFAULT_COLOR = \u0027grey\u0027;\r\n\r\n// Deterministick\u00FD PRNG, a\u0165 maj\u00ED v\u0161echny prohl\u00ED\u017Ee\u010De v \u017Eeb\u0159\u00ED\u010Dku stejn\u00E1 data.\r\nfunction mulberry32(seed) {\r\n return function () {\r\n seed |= 0;\r\n seed = (seed \u002B 0x6d2b79f5) | 0;\r\n var t = Math.imul(seed ^ (seed \u003E\u003E\u003E 15), 1 | seed);\r\n t = (t \u002B Math.imul(t ^ (t \u003E\u003E\u003E 7), 61 | t)) ^ t;\r\n return ((t ^ (t \u003E\u003E\u003E 14)) \u003E\u003E\u003E 0) / 4294967296;\r\n };\r\n}\r\n\r\nvar random = mulberry32(0xc0ffee);\r\nvar DATA = new Array(N);\r\nfor (var i = 0; i \u003C N; i\u002B\u002B) {\r\n DATA[i] = { id: i \u002B 1, status: STATUSES[Math.floor(random() * STATUSES.length)] };\r\n}\r\n\r\nfunction colorByIfElse(status) {\r\n if (status === \u0027draft\u0027) return \u0027grey-lighten-1\u0027;\r\n else if (status === \u0027pending\u0027) return \u0027amber\u0027;\r\n else if (status === \u0027queued\u0027) return \u0027blue-grey\u0027;\r\n else if (status === \u0027scheduled\u0027) return \u0027indigo\u0027;\r\n else if (status === \u0027running\u0027) return \u0027blue\u0027;\r\n else if (status === \u0027paused\u0027) return \u0027orange\u0027;\r\n else if (status === \u0027resumed\u0027) return \u0027light-blue\u0027;\r\n else if (status === \u0027retrying\u0027) return \u0027deep-orange\u0027;\r\n else if (status === \u0027succeeded\u0027) return \u0027green\u0027;\r\n else if (status === \u0027failed\u0027) return \u0027red\u0027;\r\n else if (status === \u0027cancelled\u0027) return \u0027brown\u0027;\r\n else if (status === \u0027expired\u0027) return \u0027grey-darken-2\u0027;\r\n else if (status === \u0027archived\u0027) return \u0027blue-grey-darken-1\u0027;\r\n else if (status === \u0027deleted\u0027) return \u0027red-darken-4\u0027;\r\n else if (status === \u0027blocked\u0027) return \u0027purple\u0027;\r\n else if (status === \u0027approved\u0027) return \u0027teal\u0027;\r\n else if (status === \u0027rejected\u0027) return \u0027pink\u0027;\r\n else if (status === \u0027review\u0027) return \u0027cyan\u0027;\r\n else if (status === \u0027published\u0027) return \u0027light-green\u0027;\r\n else if (status === \u0027unknown\u0027) return \u0027grey\u0027;\r\n else return DEFAULT_COLOR;\r\n}\r\n\r\nfunction colorBySwitch(status) {\r\n switch (status) {\r\n case \u0027draft\u0027: return \u0027grey-lighten-1\u0027;\r\n case \u0027pending\u0027: return \u0027amber\u0027;\r\n case \u0027queued\u0027: return \u0027blue-grey\u0027;\r\n case \u0027scheduled\u0027: return \u0027indigo\u0027;\r\n case \u0027running\u0027: return \u0027blue\u0027;\r\n case \u0027paused\u0027: return \u0027orange\u0027;\r\n case \u0027resumed\u0027: return \u0027light-blue\u0027;\r\n case \u0027retrying\u0027: return \u0027deep-orange\u0027;\r\n case \u0027succeeded\u0027: return \u0027green\u0027;\r\n case \u0027failed\u0027: return \u0027red\u0027;\r\n case \u0027cancelled\u0027: return \u0027brown\u0027;\r\n case \u0027expired\u0027: return \u0027grey-darken-2\u0027;\r\n case \u0027archived\u0027: return \u0027blue-grey-darken-1\u0027;\r\n case \u0027deleted\u0027: return \u0027red-darken-4\u0027;\r\n case \u0027blocked\u0027: return \u0027purple\u0027;\r\n case \u0027approved\u0027: return \u0027teal\u0027;\r\n case \u0027rejected\u0027: return \u0027pink\u0027;\r\n case \u0027review\u0027: return \u0027cyan\u0027;\r\n case \u0027published\u0027: return \u0027light-green\u0027;\r\n case \u0027unknown\u0027: return \u0027grey\u0027;\r\n default: return DEFAULT_COLOR;\r\n }\r\n}\r\n\r\nvar COLORS_LITERAL = {\r\n approved: \u0027teal\u0027,\r\n archived: \u0027blue-grey-darken-1\u0027,\r\n blocked: \u0027purple\u0027,\r\n cancelled: \u0027brown\u0027,\r\n deleted: \u0027red-darken-4\u0027,\r\n draft: \u0027grey-lighten-1\u0027,\r\n expired: \u0027grey-darken-2\u0027,\r\n failed: \u0027red\u0027,\r\n paused: \u0027orange\u0027,\r\n pending: \u0027amber\u0027,\r\n published: \u0027light-green\u0027,\r\n queued: \u0027blue-grey\u0027,\r\n rejected: \u0027pink\u0027,\r\n resumed: \u0027light-blue\u0027,\r\n retrying: \u0027deep-orange\u0027,\r\n review: \u0027cyan\u0027,\r\n running: \u0027blue\u0027,\r\n scheduled: \u0027indigo\u0027,\r\n succeeded: \u0027green\u0027,\r\n unknown: \u0027grey\u0027\r\n};\r\n\r\n// Bez prototypu: hodnota \u0027__proto__\u0027 nebo \u0027toString\u0027 nevr\u00E1t\u00ED nesmysl.\r\nvar COLORS_NULL_PROTO = Object.assign(Object.create(null), COLORS_LITERAL);\r\n\r\nvar COLOR_MAP = new Map(Object.entries(COLORS_LITERAL));\r\n\r\nfunction colorByObjectLiteral(status) {\r\n return COLORS_LITERAL[status] || DEFAULT_COLOR;\r\n}\r\n\r\nfunction colorByObjectNullProto(status) {\r\n return COLORS_NULL_PROTO[status] || DEFAULT_COLOR;\r\n}\r\n\r\nfunction colorByMap(status) {\r\n return COLOR_MAP.get(status) || DEFAULT_COLOR;\r\n}\r\n\r\n// Sink br\u00E1n\u00ED enginu vyhodnotit v\u00FDsledek jako mrtv\u00FD k\u00F3d.\r\nvar sink = 0;","TestCases":[{"Name":"if / else if","Code":"var out = new Array(DATA.length);\r\nfor (var i = 0; i \u003C DATA.length; i\u002B\u002B) {\r\n var item = DATA[i];\r\n out[i] = { id: item.id, color: colorByIfElse(item.status) };\r\n}\r\nsink \u002B= out[out.length - 1].color.length;","IsDeferred":false},{"Name":"switch","Code":"var out = new Array(DATA.length);\r\nfor (var i = 0; i \u003C DATA.length; i\u002B\u002B) {\r\n var item = DATA[i];\r\n out[i] = { id: item.id, color: colorBySwitch(item.status) };\r\n}\r\nsink \u002B= out[out.length - 1].color.length;","IsDeferred":false},{"Name":"object lookup (literal)","Code":"var out = new Array(DATA.length);\r\nfor (var i = 0; i \u003C DATA.length; i\u002B\u002B) {\r\n var item = DATA[i];\r\n out[i] = { id: item.id, color: colorByObjectLiteral(item.status) };\r\n}\r\nsink \u002B= out[out.length - 1].color.length;","IsDeferred":false},{"Name":"object lookup (null prototype)","Code":"var out = new Array(DATA.length);\r\nfor (var i = 0; i \u003C DATA.length; i\u002B\u002B) {\r\n var item = DATA[i];\r\n out[i] = { id: item.id, color: colorByObjectNullProto(item.status) };\r\n}\r\nsink \u002B= out[out.length - 1].color.length;","IsDeferred":false},{"Name":"Map.get","Code":"var out = new Array(DATA.length);\r\nfor (var i = 0; i \u003C DATA.length; i\u002B\u002B) {\r\n var item = DATA[i];\r\n out[i] = { id: item.id, color: colorByMap(item.status) };\r\n}\r\nsink \u002B= out[out.length - 1].color.length;","IsDeferred":false}]}