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
I have added the 3d variants to the code snippets, as well as forcing the browser to actually update the styles, reading the ".offsetTop" property.
The problem with this jsperf is that it really only tests the JavaScript side of things, and only at the point of execution. Things like translate3d would perform better over a longer period of time, as the task is off-loaded onto the GPU in most cases. Unfortunately, this performance cannot be properly measured by jsperf.
<div id="elem" style="position: relative; background:#ccc; width:10px; height:10px;">
</div>
<script>
var elem = document.getElementById("elem");
var style = elem.style;
var template = document.getElementById("elem").cloneNode();
var transform = (function() {
if (undefined !== style.WebkitTransform) {
return "WebkitTransform";
} else if (undefined !== style.MozTransform) {
return "MozTransform";
} else if (undefined !== style.OTransform) {
return "OTransform";
} else if (undefined !== style.msTransform) {
return "msTransform";
} else if (undefined !== style.WebkitTransform) {
return "WebkitTransform";
} else {
return "transform";
}
})();
</script>
var newElem = template.cloneNode();
elem.parentNode.replaceChild(newElem, elem);
elem = newElem;
var style = newElem.style;
var x = Math.random() * 10;
Ready to run.
Test | Ops/sec | |
---|---|---|
translate |
| ready |
translate X/Y |
| ready |
translateX/Y/Z |
| ready |
translate, translateZ |
| ready |
translate3d |
| ready |
position left/top |
| ready |
margin left/top |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.