Script Preparation code:
x
 
//Add 100,000 elements
var frag = document.createDocumentFragment();
for (var i=0; i<10; i++){
  var outDiv = document.createElement('div');
  for (var j=0; j<100; j++){
    var midDiv = document.createElement('div');
    for (var k=0; k<100; k++){
      var inDiv = document.createElement('div');
      if(i==6 && j==60){
        if(k==60)
          inDiv.id="one";
        else if(k==61)
          inDiv.id="two";
      }
      midDiv.appendChild(inDiv)
    }
    outDiv.appendChild(midDiv)
  }
  frag.appendChild(outDiv);
}
document.body.appendChild(frag);
    // A simple way to check for HTML strings
    // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
    // Strict HTML recognition (#11290: must start with <)
    // Shortcut simple #id case for speed
var rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
var selectorOne = '#one';
var selectorTwo = '#two';
var selectorBoth = selectorOne + ',' +selectorTwo;
Tests:
  • Original selector

     
    var elements = document.querySelectorAll(selectorBoth);
    if( $(elements).length != 2 ) throw Error()
  • Parse selector

     
    var selectors = selectorBoth.split(',');
    var ids = true;
    for(var i=0; i<selectors.length; i++)
    {
      var match = rquickExpr.exec( selectors[i] );
      ids = ids && (selectors[i] = match[2]);
    }
    var elements = [];
    if(ids){
      for(selector in selectors){
        elements.push( document.getElementById(selector) )
      }
    }
    else
    {
      elements = document.querySelectorAll(selectorBoth)
      throw Error("querySelectorAll");
    }
    if( $(elements).length != 2 ) throw Error()
  • select one two jquery add

     
    if( $('#one').add('#two').length != 2 ) throw Error()
  • Select one two array

     
    if( $([document.getElementById('one'),document.getElementById('two')]).length != 2 ) throw Error()
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Original selector
    Parse selector
    select one two jquery add
    Select one two array

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 6 years ago)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/65.0.3325.181 Chrome/65.0.3325.181 Safari/537.36
Chromium 65 on Ubuntu
View result in a separate tab
Test name Executions per second
Original selector 171.6 Ops/sec
Parse selector 93266.0 Ops/sec
select one two jquery add 80721.3 Ops/sec
Select one two array 250662.7 Ops/sec