Test name | Executions per second |
---|---|
closest with element selector | 703.0 Ops/sec |
while loop + tagName check | 475.8 Ops/sec |
event propagation | 56.3 Ops/sec |
<context-provider id="provider">
<div>
<div></div>
<div>
<span>
<span>
<span>abc</span>
</span>
def
<span>
<span id="foo"></span>
</span>
</span>
ghi
</div>
</div>
</context-provider>
var context = document.getElementById('provider');
var element = document.getElementById('foo');
var SimpleContextEvent = class SimpleContextEvent extends Event {
data = null;
constructor() {
super('context-request', {bubbles: true, composed: true});
}
};
context.addEventListener('context-request', event => {
event.data = 'abc';
event.stopPropagation();
});
var i = 5000;
while (i--) {
let ctx = element;
ctx = ctx.closest('context-provider');
}
var i = 5000;
while (i--) {
let ctx = element;
while (ctx) {
if (ctx.tagName === 'CONTEXT-PROVIDER') {
break;
}
ctx = ctx.parentNode;
}
}
var i = 5000;
while (i--) {
let ctxEvent = new SimpleContextEvent();
element.dispatchEvent(ctxEvent);
}