var array1000 = (new Array(1000)).map((e, i) => ({a: i, b: i, c: i, d: i, e: i, f: i, g: i, test: 'object'+ i}));
var array10000 = (new Array(10000)).map((e, i) => ({a: i, b: i, c: i, d: i, e: i, f: i, g: i, test: 'object'+ i}));
var array100000 = (new Array(100000)).map((e, i) => ({a: i, b: i, c: i, d: i, e: i, f: i, g: i, test: 'object'+ i}));
const result = array1000.map(() => true);
const result = new Array(array1000.length).fill(true);
const result = array10000.map(() => true);
const result = new Array(array10000.length).fill(true);
const result = array100000.map(() => true);
const result = new Array(array100000.length).fill(true);
const result = new Array(array100000.length).fill(0).map(() => true)
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
.map(callback) - 1 000 elements | |
.fill(value) - 1 000 elements | |
.map(callback) - 10 000 elements | |
.fill(value) - 10 000 elements | |
.map(callback) - 100 000 elements | |
.fill(value) - 100 000 elements | |
.fill(dummy).map(callback) - 100 000 elements |
Test name | Executions per second |
---|---|
.map(callback) - 1 000 elements | 376574.6 Ops/sec |
.fill(value) - 1 000 elements | 861659.2 Ops/sec |
.map(callback) - 10 000 elements | 41538.4 Ops/sec |
.fill(value) - 10 000 elements | 99303.6 Ops/sec |
.map(callback) - 100 000 elements | 3604.8 Ops/sec |
.fill(value) - 100 000 elements | 9119.8 Ops/sec |
.fill(dummy).map(callback) - 100 000 elements | 1379.0 Ops/sec |
Let's dive into the world of JavaScript microbenchmarks!
Benchmark Definition
The benchmark measures the performance difference between three approaches to create an array with a specific number of elements:
map(callback)
with a dummy value (an empty object).fill(value)
with a non-zero value.fill(dummy).map(callback)
, which creates an empty array and then fills it with the dummy value before mapping.Options Compared
The benchmark compares the performance of these three approaches:
map(callback)
with a dummy value (an empty object).fill(value)
with a non-zero value.fill(dummy)
with map(callback)
.Pros and Cons of Each Approach:
map(callback)
with a dummy value:map()
function.fill(value)
with a non-zero value:map(callback)
since it only requires filling an array with a single value, which is typically more efficient.fill(dummy).map(callback)
:Library Usage
The benchmark uses the Array.prototype.map()
function, which is a built-in JavaScript method. No external libraries are required.
Special JS Features/Syntax
None mentioned in this specific benchmark. However, if you're interested in exploring other special features or syntax in JavaScript, you can consider:
=>
), destructuring, and template literals.this
context.Other Alternatives
If you're looking for alternative approaches to create an array with a specific number of elements, consider:
Array.from()
or Array.create()
(more on this in a separate explanation).Keep in mind that the best approach will depend on your specific use case and performance requirements.