Run details:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36
Chrome 115
Mac OS X 10.15.7
Desktop
one year ago
Test name Executions per second
Set 471.4 Ops/sec
Object 332.8 Ops/sec
Map 450.0 Ops/sec
Tests:
  • Set

    x
     
      const set = new Set();
      
      for (let i = 0; i < 10000; ++i) {
        set.add(`key_${i}`);
      }
      for (let j = 0; j < 10000; ++j) {
        set.add(`key_${j}`);
      }
      let result = 0;
      
      for (let k = 0; k < 20000; ++k) {
        result += set.has(`key_${k}`);
      }
    console.log(result);
  • Object

     
      const obj = {};
      
      for (let i = 0; i < 10000; ++i) {
        obj[`key_${i}`] = true;
      }
      for (let j = 0; j < 10000; ++j) {
        obj[`key_${j}`] = 1;
      }
      let result = 0;
      
      for (let k = 0; k < 20000; ++k) {
        result += obj.hasOwnProperty(`key_${k}`);
      }
    console.log(result);
  • Map

     
      const map = new Map();
      
      for (let i = 0; i < 10000; ++i) {
        map.set(`key_${i}`, true);
      }
      for (let j = 0; j < 10000; ++j) {
        map.set(`key_${j}`, 1);
      }
      let result = 0;
      
      for (let k = 0; k < 20000; ++k) {
        result += map.get(`key_${k}`);
      }
    console.log(result);