bind performance test

Benchmark created on


Preparation HTML

<div id="testnode" class="testclass">
</div>

Setup

Aux = {};
    Aux.String = {};
    Aux.String.trim = function(string) {
      return string.replace(/^\s+|\s+$/g, '');
    };
    
    var ID_CONDITION = '#',
        CLASS_CONDITION = '.',
        TYPE_VALUE_CONDITION = '=',
        ATTRIBUTE_CONDITION = '@';

Test runner

Ready to run.

Testing in
TestOps/sec
Test1
var condition = 'div #testnode',
    selectors = condition.split(' '),
    t = document.getElementById('testnode'),
    pass = false,
    cond = null,
    str = null,
    selector = null,
    i;

for (i = selectors.length; i--;) {

  selector = Aux.String.trim(selectors[i]);
  cond = selector[0];
  str = selector.substr(1);

  pass = (cond == ID_CONDITION) ? (t.id == str) : (cond == CLASS_CONDITION) ? ((t.className.indexOf(str) >= 0) ? true : false) : (cond == TYPE_VALUE_CONDITION) ? (t.type && t.type.toLowerCase() == str) : (cond == ATTRIBUTE_CONDITION) ? t.hasAttribute(str) : (true) ? (t.tagName.toLowerCase() == selector) : false;

  if (pass === false) {
    break;
  }
}
ready
test2
var condition = 'div #testnode',
    selectors = condition.split(' '),
    t = document.getElementById('testnode'),
    pass = false,
    cond = null,
    str = null,
    selector = null,
    i;

for (i = selectors.length; i--;) {

  selector = Aux.String.trim(selectors[i]);
  cond = selector[0];
  str = selector.substr(1);

  pass = (cond == ID_CONDITION) ? (t.id == str) : (cond == CLASS_CONDITION) ? ((t.className.indexOf(str) >= 0) ? true : false) : (cond == TYPE_VALUE_CONDITION) ? (t.type && t.type.toLowerCase() == str) : (cond == ATTRIBUTE_CONDITION) ? t.hasAttribute(str) : (true) ? (t.tagName.toLowerCase() == selector) : false;

  if (pass === false) {
    break;
  }
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.