const myMap = new Map()
for (let i = 0; i++; i < 1000000) {
myMap.set(i,i)
}
const mySet = new Map()
for (let i = 0; i++; i < 1000000) {
mySet.add(i)
}
let myArray = []
for (let i = 0; i++; i < 1000000) {
myArray.push(i)
}
function createMap(size) {
const myMap = new Map()
for (let i = 0; i++; i < size) {
myMap.set(size, size)
}
return myMap
}
function createSet(size) {
const mySet = new Set()
for (let i = 0; i++; i < size) {
mySet.add(size, size)
}
return mySet
}
function removeFromArray(element) {
return myArray.splice(myArray.indexOf(element), 1)
}
function removeFromMap(element) {
return myMap.delete(element)
}
function removeFromSet(element) {
return mySet.delete(element)
}
createMap(9999)
createSet(9999)
createMap(10)
createSet(10)
createMap(1000000)
createSet(1000000)
removeFromArray(5000)
removeFromMap(5000)
removeFromSet(5000)
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
createMap Middle | |
createSet Middle | |
createMap small | |
createSet small | |
createMap BIG | |
createSet BIG | |
remove from array | |
remove from map | |
remove from set |
Test name | Executions per second |
---|---|
createMap Middle | 3537684.5 Ops/sec |
createSet Middle | 4031577.2 Ops/sec |
createMap small | 3964593.2 Ops/sec |
createSet small | 4105140.2 Ops/sec |
createMap BIG | 4015378.8 Ops/sec |
createSet BIG | 3445329.0 Ops/sec |
remove from array | 9933735.0 Ops/sec |
remove from map | 12726327.0 Ops/sec |
remove from set | 13269979.0 Ops/sec |
Let's dive into the world of Map vs Set benchmarks.
What is tested?
The provided benchmark tests the performance of two data structures: Maps and Sets, both implemented using JavaScript objects. The benchmark evaluates how efficiently these data structures can be created, populated with elements, and iterated over to remove specific elements.
Options compared
There are four options being compared:
add()
method.push()
method.Pros and Cons of different approaches
Remove from Array, Map, and Set
Removing elements from each data structure has a different performance profile:
splice()
or indexing is relatively fast.delete()
method or by iterating over the keys/values is slower compared to array removal.Observations
The benchmark results show that:
Conclusion
The choice of data structure depends on the specific use case: