Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Testing both ways to run conditions on getAttribute from a Node
(version: 0)
Comparing performance of:
A vs B
Created:
2 years ago
by:
Guest
Jump to the latest result
HTML Preparation code:
<div id="test" data-media-type="gifv"> lorem ipsum </div>
Script Preparation code:
localName = 'img'; parentNode = document.getElementById('test');
Tests:
A
if (localName === "img" && (parentNode.getAttribute("data-media-type") === "video" || parentNode.getAttribute("data-media-type") === "gifv")) { // do stuff }
B
if (localName === "img" && ["video", "gifv"].includes(parentNode.getAttribute("data-media-type"))) { // do stuff }
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
A
B
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
2 years ago
)
User agent:
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:124.0) Gecko/20100101 Firefox/124.0
Browser/OS:
Firefox 124 on Ubuntu
View result in a separate tab
Embed
Embed Benchmark Result
Test name
Executions per second
A
452282336.0 Ops/sec
B
9537776.0 Ops/sec
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
Let's break down the benchmark and its test cases to understand what's being tested. **Benchmark Overview** The benchmark is designed to compare two approaches for running conditions on the `getAttribute` method of an HTML element in a Node.js environment. **HTML Preparation Code** The provided HTML preparation code creates a simple web page with a `<div>` element that has an `id` attribute set to "test". The `data-media-type` attribute is also set to either "video" or "gifv". ```html <div id="test" data-media-type="gifv"> lorem ipsum </div> ``` **Script Preparation Code** The provided script preparation code sets a variable `localName` to the string "img", which will be used in both test cases. ```javascript localName = 'img'; parentNode = document.getElementById('test'); ``` **Test Cases** There are two individual test cases: **A** ```javascript if (localName === "img" && (parentNode.getAttribute("data-media-type") === "video" || parentNode.getAttribute("data-media-type") === "gifv")) { // do stuff } ``` This test case uses a traditional `if` statement with multiple conditions. It checks if the `localName` is equal to "img" and if either the `data-media-type` attribute is equal to "video" or "gifv". **B** ```javascript if (localName === "img" && ["video", "gifv"].includes(parentNode.getAttribute("data-media-type"))) { // do stuff } ``` This test case uses an array inclusion check (`includes()` method) instead of a traditional `if` statement with multiple conditions. It checks if the `localName` is equal to "img" and if the value of the `data-media-type` attribute is included in the array ["video", "gifv"]. **Pros and Cons** Here are some pros and cons of each approach: * **Traditional `if` statement with multiple conditions (A)**: + Pros: Easy to understand, easy to maintain. + Cons: Can be slow due to the repeated function calls for the attribute access. * **Array inclusion check (`includes()` method) (B)**: + Pros: Faster than traditional `if` statements, as it avoids repeated function calls. + Cons: May not be as easy to understand for beginners. **Library and Special JavaScript Features** There is no library used in this benchmark. However, the test cases do utilize special JavaScript features: * **Template literals**: The script preparation code uses a template literal to set the `localName` variable. * **Arrow functions**: Although not explicitly mentioned, arrow functions are implied by the concise syntax of the benchmark definitions. **Other Alternatives** Some other approaches could be explored for running conditions on the `getAttribute` method: * Using a regular expression to match against the attribute value * Using a switch statement with multiple cases * Using a custom function or module to abstract away the attribute access However, these alternatives might not provide any significant performance benefits over the traditional `if` statements and array inclusion checks used in the benchmark.
Related benchmarks:
getElementById vs querySelector vs getElementsByClassName vs getElementsByName
getElementById vs querySelector vs getElementsByClassName....
getElementById vs querySelectorAll vs getElementsByClassName vs getElementsByName
getElementById vs querySelector(css) vs getElementsByClassName vs getElementsByName
hasAttribute with/out getAttribute
Comments
Confirm delete:
Do you really want to delete benchmark?