jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
<div id="iddiv">
<div class="inside"></div>
<div class="inside"></div>
</div>
<div class="classdiv"></div>
<script>
// James Doyle - original regex version
window.$ = function(selector) {
var matches = {
'#': 'getElementById',
'.': 'getElementsByClassName',
'@': 'getElementsByName',
'=': 'getElementsByTagName',
'*': 'querySelectorAll'
};
var regex = /[=#@.*]/.exec(selector)[0];
return (document[matches[regex]](selector.split(regex)[1]));
};
// Michał Wachowski
window.$$ = function(s) {
return document[{
'#': 'getElementById',
'.': 'getElementsByClassName',
'@': 'getElementsByName',
'=': 'getElementsByTagName'}[s[0]]
|| 'querySelectorAll'](s.slice(1))
};
// Tomasz Żełudziewicz
window.$$$ = function(s) {
try {return document[{
'#': 'getElementById',
'.': 'getElementsByClassName',
'@': 'getElementsByName',
'=': 'getElementsByTagName',
'?': 'querySelectorAll'
}[s[0]]](s.slice(1));}catch(e){}
};
// Phil Ricketts - switch version
window.get = function(selector,func){
switch (selector[0]) {
case '.': func = 'getElementsByClassName'; break;
case '#': func = 'getElementById'; break;
case '=': func = 'getElementsByTagName'; break;
case '*': func = 'querySelectorAll'; break;
case '@': func = 'getElementsByName'; break;
};
return document[func](selector.substring(0,1));
};
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
Switch version |
| ready |
return string[0] in document |
| ready |
try/catch return |
| ready |
document gets / query |
| ready |
querySelectorAll |
| ready |
querySelector |
| ready |
original regex |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.