Run details:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Chrome 103
Mac OS X 10.15.7
Desktop
2 years ago
Test name Executions per second
Map Insert 1229.8 Ops/sec
Object Insert 1052.9 Ops/sec
Object2 Insert 1053.2 Ops/sec
Map Delete 5714.5 Ops/sec
Object Delete 1046.2 Ops/sec
Object2 Delete 1353.9 Ops/sec
Map Copy 0.2 Ops/sec
Object Copy 875.2 Ops/sec
Object2 Copy 880.7 Ops/sec
Map to Object 0.1 Ops/sec
Script Preparation code:
AخA
 
var map = new Map();
var obj = {};
var obj2 = Object.create(null);
Tests:
  • Map Insert

     
    for (let i = 0; i < 10000; i++) {
        map.set(`a${i}`, i); 
    }
  • Object Insert

     
    for (let i = 0; i < 10000; i++) {
        obj[`a${i}`] = i; 
    }
  • Object2 Insert

     
    for (let i = 0; i < 10000; i++) {
        obj2[`a${i}`] = i; 
    }
  • Map Delete

     
    let map = new Map();
    for (let i = 0; i < 10000; i++) {
        map.delete(`a${i}`); 
    }
  • Object Delete

     
    for (let i = 0; i < 10000; i++) {
        delete obj[`a${i}`]; 
    }
  • Object2 Delete

     
    for (let i = 0; i < 10000; i++) {
        delete obj2[`a${i}`]; 
    }
  • Map Copy

     
    for (let i = 0; i < 10000; i++) {
        const map2 = new Map(map); 
    }
  • Object Copy

     
    for (let i = 0; i < 10000; i++) {
        const objCopy = {...obj};
    }
  • Object2 Copy

     
    for (let i = 0; i < 10000; i++) {
        const objCopy = {...obj2};
    }
  • Map to Object

     
    for (let i = 0; i < 10000; i++) {
        const newObj = Object.fromEntries(map.entries()); 
    }