{"ScriptPreparationCode":"// Build baseline container with TOTAL_CHILDREN children (off-DOM layout path)\r\nfunction makeContainer() {\r\n const wrap = document.createElement(\u0027div\u0027);\r\n document.body.appendChild(wrap);\r\n return wrap;\r\n}\r\n\r\n// Helper: make a fresh array of N new nodes (no pooling)\r\nfunction makeNodes(n) {\r\n const a = new Array(n);\r\n for (let i = 0; i \u003C n; i\u002B\u002B) {\r\n const d = document.createElement(\u0027div\u0027);\r\n d.textContent = \u0027n\u0027\u002Bi;\r\n a[i] = d;\r\n }\r\n return a;\r\n}\r\n\r\nfunction weightedRand() {\r\n const weights = [0.02, 0.5, 0.4, 0.08]; // 3, 4, 5, 6\r\n const nums = [3, 4, 5, 6];\r\n\r\n let r = Math.random();\r\n let acc = 0;\r\n for (let i = 0; i \u003C weights.length; i\u002B\u002B) {\r\n acc \u002B= weights[i];\r\n if (r \u003C acc) return nums[i];\r\n }\r\n}\r\n\r\nlet randarr = Array.from({ length: 1000 }, weightedRand);\r\nlet oldNodes = makeNodes(weightedRand());\r\nlet wrap = makeContainer(); \r\nlet oldLen = oldNodes.length;\r\nfor (let i = 0; i \u003C oldNodes.length; \u002B\u002Bi) {\r\n wrap.append(oldNodes[i]);\r\n}","TestCases":[{"Name":"one by one manual","Code":"for (let idx=0;idx\u003C1000;\u002B\u002Bidx) {\r\n\tconst newNodes = makeNodes(randarr[idx]);\r\n let newLen = newNodes.length;\r\n\tlet minLen=oldLen\u003CnewLen?oldLen:newLen,i;\r\n\tfor (i=0;i\u003CminLen;i\u002B\u002B)oldNodes[i].replaceWith(newNodes[i]);\r\n\tfor (i=minLen;i\u003ColdLen;i\u002B\u002B)oldNodes[i].remove();\r\n\tfor (i=minLen;i\u003CnewLen;i\u002B\u002B)wrap.appendChild(newNodes[i]);\r\n \toldLen = newLen;\r\n oldNodes = newNodes;\r\n}","IsDeferred":false},{"Name":"replaceChildren mass","Code":"for (let idx = 0; idx \u003C 1000; \u002B\u002Bidx) {\r\n const newNodes = makeNodes(randarr[idx]);\r\n wrap.replaceChildren(...newNodes);\r\n}","IsDeferred":false},{"Name":"replaceWith first (firstChild)","Code":"for (let idx = 0; idx \u003C 1000; \u002B\u002Bidx) {\r\n const newNodes = makeNodes(randarr[idx]);\r\n wrap.textContent = \u0022\u0022;\r\n wrap.prepend(...newNodes);\r\n}","IsDeferred":false}]}