Index: third_party/WebKit/PerformanceTests/ShadowDOM/v1-slot-append.html |
diff --git a/third_party/WebKit/PerformanceTests/ShadowDOM/v1-slot-append.html b/third_party/WebKit/PerformanceTests/ShadowDOM/v1-slot-append.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..84ba432e12b6d25b98812479afa2e12a1d38e2bb |
--- /dev/null |
+++ b/third_party/WebKit/PerformanceTests/ShadowDOM/v1-slot-append.html |
@@ -0,0 +1,55 @@ |
+<!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.measureRunsPerSecond({ |
+ description: "Measure v1 distribution performance", |
+ run: run, |
+ done: () => { |
+ wrapper.innerHTML = ''; |
+ } |
+}); |
+</script> |