chromium/third_party/blink/perf_tests/shadow_dom/v1-slot-append.html

<!DOCTYPE html>
<script src="../resources/runner.js"></script>
<!-- This is a micro benchmark to catch an unintentional regression.
     If the reason of a regression is clear, it is okay.
     We do not have to optimize the result of the benchmark. -->
<div id="wrapper">
  <div id="host"></div>
</div>
<script>
'use strict';
const numChildOfHost = 20;
const numDivsInShadow = 20;
const loops = 100;

const slot1 = document.createElement('slot');
slot1.setAttribute('name', 'slot1');
const slot2 = document.createElement('slot');
slot2.setAttribute('name', 'slot2');
const shadowRoot = host.attachShadow({mode: 'open'});
shadowRoot.appendChild(slot1);
shadowRoot.appendChild(slot2);

for (let i = 0; i < numDivsInShadow; ++i) {
  let div = document.createElement('div');
  shadowRoot.appendChild(div);
}

for (let i = 0; i < numChildOfHost; ++i) {
  let div1 = document.createElement('div');
  div1.setAttribute('slot', 'slot1');
  host.appendChild(div1);
  let div2 = document.createElement('div');
  div2.setAttribute('slot', 'slot2');
  host.appendChild(div2);
}

function run() {
  for (let i = 0; i < loops; ++i) {
    const slot3 = document.createElement('slot');
    slot1.setAttribute('name', 'slot3');
    const slot4 = document.createElement('slot');
    slot1.setAttribute('name', 'slot1');
    slot3.remove();
    slot4.remove();
  }
}

PerfTestRunner.measureTime({
  description: "Measure v1 distribution performance",
  run: run,
  done: () => {
    wrapper.innerHTML = '';
  }
});
</script>