HTML Preparation code:
AخA
 
1
<div id="foo" class="bar test    space  OK"></div>
Script Preparation code:
 
/*your preparation JavaScript code goes here
To execute async code during the script preparation, wrap it as function globalMeasureThatScriptPrepareFunction, example:*/
async function globalMeasureThatScriptPrepareFunction() {
    // This function is optional, feel free to remove it.
    // await someThing();
}
Tests:
  • Split + filter Classname

     
    let element = document.getElementById("foo");
    let i = 1000;
    while (i--) {
        const classes = element.className.split(/\s+/g)
        if (classes.length) {
              let selector = `${classes.join('.')}`;
              if (selector.endsWith('.')) {
                selector = `.${selector.slice(0, -1)}`;
              }
        }
    }
  • Trim + replace ClassName

     
    let element = document.getElementById("foo");
    let i = 1000;
    while (i--) {
        let selector = "." + element.className.trim().replace(/\s+/g, '.');
    }
  • No Trim - Replace CLassName

     
    let element = document.getElementById("foo");
    let i = 1000;
    while (i--) {
        let selector = "." + element.className.replace(/\s+/g, '.');
        if (selector.endsWith('.')) {
          selector = selector.slice(0, -1);
        }
    }
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Split + filter Classname
    Trim + replace ClassName
    No Trim - Replace CLassName

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one month ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
Chrome 133 on Windows
View result in a separate tab
Test name Executions per second
Split + filter Classname 5821.8 Ops/sec
Trim + replace ClassName 9503.6 Ops/sec
No Trim - Replace CLassName 7192.6 Ops/sec