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
Is there a performance hit on a page with a lot of elements that are "display: none", versus a lot of elements that are detached from the DOM?
The performance I'm looking for is not the hide/show performance, but instead, I'm interested in the rest of the page's performance when there are a large number of hidden elements.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<div style="overflow: hidden; height: 50px;">
<div id="clone-container">
<div id="clone-and-hide-me" class="clone">
This element isn't empty. <p class="asdf">bacon ipsum</p> dolor <input type="text" value="sit amet" />
</div>
</div>
</div>
<script>
var clone = $('#clone-and-hide-me').remove();
var cloneContainer = $('#clone-container');
function setupTest(testNumber) {
switch (testNumber) {
case 1:
break;
case 2:
createClones().hide();
break;
case 3:
window.clonesStayInMemory = createClones().remove();
break;
default:
throw new Error("too many tests");
}
}
function createClones() {
var cloneCount = 10000;
var clones = new Elements([]);
for (var i = 0; i < cloneCount; i++) {
clones.push(clone.clone());
}
cloneContainer.empty().adopt(clones);
return clones;
};
var measureCount = 0;
var currentTestNumber = 0;
var measureSomething = function(testNumber) {
if (testNumber != currentTestNumber) {
currentTestNumber = testNumber;
setupTest(testNumber);
}
measureCount++;
cloneContainer.css('height', 100 + (measureCount % 100));
var readTheHeight = cloneContainer.offsetHeight + 0;
}
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
Using nothing (for base) |
| ready |
Using "hide" |
| ready |
Using "remove" |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.