let operations = [{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},]
for (let i=0; i< operations.length; i++) {
if (operations[i].foo && operations[i].foo.bar) {
operations[i].foo.bar = 'zulu';
console.log(operations[i].foo.bar);
}
}
let operations = [{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},{foo: {bar:'bar'}},]
for (let value of operations) {
if (value.foo && value.foo.bar) {
value.foo.bar = 'zulu'
console.log(value.foo.bar);
}
}
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
for loop | |
for...of loop |
Test name | Executions per second |
---|---|
for loop | 1309.5 Ops/sec |
for...of loop | 1277.5 Ops/sec |
Let's dive into the world of JavaScript microbenchmarks!
Benchmark Overview
The benchmark is comparing two approaches to iterate over an array: traditional for
loops and the newer for...of
loop syntax.
Options Compared
for
loop: This approach uses a manual index variable to iterate over the array elements.for (let i = 0; i < operations.length; i++) {
// ...
}
for...of
loop: This approach uses the iterator protocol to iterate over the array elements without manually managing an index variable.Pros and Cons
Traditional for
Loop:
Pros:
Cons:
for...of
Loop:
Pros:
Cons:
Library Used (if any)
In this benchmark, no specific library is used. However, if a library were involved, it might be used for additional functionality or optimizations.
Special JS Feature/Syntax
There are no special JavaScript features or syntaxes mentioned in this benchmark. The focus is on the iteration mechanisms themselves.
Other Alternatives
If you'd like to explore alternative approaches, consider the following:
operations.forEach((value) => {
// ...
});
p-iterable
or async-iterator
might provide additional optimizations.Keep in mind that the choice of iteration mechanism ultimately depends on your specific use case, performance requirements, and personal preference.