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
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<div id="iddiv">
<div class="inside"></div>
<div class="inside"></div>
</div>
<div class="classdiv"></div>
<script>
// James Doyle - original regex version
window.regex$ = 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.michal$ = function(s) {
return document[{
'#': 'getElementById',
'.': 'getElementsByClassName',
'@': 'getElementsByName',
'=': 'getElementsByTagName'}[s[0]]
|| 'querySelectorAll'](s.slice(1))
};
// Tomasz Żełudziewicz
window.tomasz$ = function(s) {
try {return document[{
'#': 'getElementById',
'.': 'getElementsByClassName',
'@': 'getElementsByName',
'=': 'getElementsByTagName',
'?': 'querySelectorAll'
}[s[0]]](s.slice(1));}catch(e){}
};
window.$$$$ = function(s) {
try {return document[[s[0]]](s.slice(1));}catch(e){}
};
// Mark Knol
var _matches = {
'#': document.getElementById,
'.': document.getElementsByClassName,
'@': document.getElementsByName,
'=': document.getElementsByTagName,
'?': document.querySelectorAll
}
window.$$$$$ = function(selector) {
return (_matches[selector[0]].call(document, selector.slice(1)));
};
window.switch$ = function(selector) {
var key = selector[0];
switch(key)
{
case '#': return document.getElementById(selector.slice(1)); break;
case '.': return document.getElementsByClassName(selector.slice(1)); break;
case '@': return document.getElementsByName(selector.slice(1)); break;
case '=': return document.getElementsByTagName(selector.slice(1)); break;
case '?': return document.querySelectorAll(selector.slice(1)); break;
}
return null;
};
window.if$ = function(selector) {
var key = selector[0];
if(key === '#') return document.getElementById(selector.slice(1));
if(key === '.') return document.getElementsByClassName(selector.slice(1));
if(key === '@') return document.getElementsByName(selector.slice(1));
if(key === '=') return document.getElementsByTagName(selector.slice(1));
if(key === '?') return document.querySelectorAll(selector.slice(1));
return null;
};
// Shortcut version by Indloon
window.elementByClass = function(string) { return document.getElementsByClassName(string); };
window.elementById = function(string) { return document.getElementById(string); };
window.elementByTag = function(string) { return document.getElementsByTagName(string); };
window.elementByName = function(string) { return document.getElementsByName(string); };
window.queryElement = function(string) { return document.querySelectorAll(string); };
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
Original regex |
| ready |
return string[0] in document |
| ready |
try/catch return |
| ready |
document gets |
| ready |
querySelector |
| ready |
switch statement |
| ready |
if statement |
| ready |
Shortcuts |
| ready |
jQuery |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.