<div id="el">
<h2>Lorem ipsum dolor sit amet</h2>
</div>
var el = document.getElementById("el");
const { clientWidth: width, clientHeight: height } = el;
const perim = (width + height) * 2;
const { clientWidth, clientHeight } = el;
const perim = (clientWidth + clientHeight) * 2;
const width = el.clientWidth;
const height = el.clientHeight;
const perim = (width + height) * 2;
const { width, height } = el.getBoundingClientRect();
const perim = (width + height) * 2;
const rect = el.getBoundingClientRect();
const width = rect.width;
const height = rect.height;
const perim = (width + height) * 2;
const { height, width } = getComputedStyle(el);
const perim = (width + height) * 2;
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
clientWidth / clientHeight (destructured and renamed) | |
clientWidth / clientHeight (destructured) | |
clientWidth / clientHeight (simple property access) | |
getBoundingClientRect() (destructured) | |
getBoundingClientRect() (simple property access) | |
getComputedStyle |
Test name | Executions per second |
---|---|
clientWidth / clientHeight (destructured and renamed) | 1782714.9 Ops/sec |
clientWidth / clientHeight (destructured) | 1775377.6 Ops/sec |
clientWidth / clientHeight (simple property access) | 1790556.4 Ops/sec |
getBoundingClientRect() (destructured) | 2379475.2 Ops/sec |
getBoundingClientRect() (simple property access) | 2412465.0 Ops/sec |
getComputedStyle | 875991.0 Ops/sec |
Overview
MeasureThat.net is a website that allows users to create and run JavaScript microbenchmarks. In this case, we have a benchmark that compares the performance of three different approaches for calculating the perimeter of an HTML element's bounding box.
Benchmark Test Cases
The test cases are designed to compare the following three approaches:
clientWidth
and clientHeight
properties of the element.getBoundingClientRect()
).getComputedStyle
method to get the styles of the element, which includes the computed values for clientWidth
and clientHeight
.Pros and Cons of Each Approach
getBoundingClientRect()
and destructuring assignment), which may incur some performance overhead.getComputedStyle
, especially if the element's size is not fixed.Other Considerations
getComputedStyle
can pose security risks if used incorrectly (e.g., attempting to access private styles), and compatibility issues across different browsers.Library and Functionality
In this benchmark, the following libraries are used:
Special JavaScript Features or Syntax
None mentioned in this benchmark, but it's worth noting that other test cases may include features like:
Keep in mind that these features are not present in this specific benchmark.