Toggle navigation
MeasureThat
.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
getBoundingClientRect vs offset
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0
Browser:
Firefox 124
Operating system:
Windows
Device Platform:
Desktop
Date tested:
one year ago
Access offset properties directly
4.3M/s
getBoundingClientRect
2.1M/s
getLocalDOMRect
985K/s
View exact numbers
Test name
Executions per second
✓
Access offset properties directly
4,303,876 Ops/sec
getBoundingClientRect
2,068,421 Ops/sec
getLocalDOMRect
985,283 Ops/sec
HTML Preparation code:
<div id="el" style="transform: rotateZ(45deg)"> <h2>Lorem ipsum dolor sit amet</h2> </div>
Script Preparation code:
function getLocalDOMRect(el) { let offsetTop = 0; let offsetLeft = 0; const width = el.offsetWidth; const height = el.offsetHeight; while (el instanceof HTMLElement) { offsetTop += el.offsetTop; offsetLeft += el.offsetLeft; el = el.offsetParent; } return new DOMRect(offsetLeft, offsetTop, width, height); } const el = document.getElementById("el");
Tests:
getBoundingClientRect
const { left, right, top, bottom } = el.getBoundingClientRect();
getLocalDOMRect
const { left, right, top, bottom } = getLocalDOMRect(el);
Access offset properties directly
const { offsetWidth, offsetHeight, offsetTop } = el;