HTML Preparation code:
AخA
 
1
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
Script Preparation code:
x
 
function getRandomInt(max) {
    return Math.floor(Math.random() * Math.floor(max));
}
var testArr = [];
for (var i = 0; i < 100000; i++) {
    testArr.push({
      val: String(getRandomInt(1000))
    });
}
Tests:
  • Array Unique

     
    const { resultArray } = testArr.reduce((result, item) => {
     
      if(!result.resultMap[item.val]){
        result.resultMap[item.val] = true;
        result.resultArray.push(item)
      }
      return result;
    }, {resultArray: [], resultMap: {}});
    return resultArray;
  • For Loop

     
    const resultArray = [];
    const resultMap = {};
    for(let item of testArr) {
      if(!resultMap[item.val]){ 
        resultMap[item.val] = true;
        resultArray.push(item)
      }
    }
    return resultArray;
  • Array Unique - v2

     
    const resultObj = testArr.reduce((result, item) => {
      if(!result[item.val]){
        result[item.val] = item;
      }
      return result;
    }, {});
    const resultArray = Object.values(resultObj);
    return resultArray;
  • For Loop - v2

     
    const resultObj = {};
    for(let item of testArr) {
      if(!resultObj[item.val]){ 
        resultObj[item.val] = item;
      }
    }
    const resultArray = Object.values(resultObj);
    return resultArray;
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Array Unique
    For Loop
    Array Unique - v2
    For Loop - v2

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 years ago)
Mozilla/5.0 (Android 11; Mobile; rv:89.0) Gecko/89.0 Firefox/89.0
Firefox Mobile 89 on Android
View result in a separate tab
Test name Executions per second
Array Unique 509.2 Ops/sec
For Loop 500.8 Ops/sec
Array Unique - v2 421.2 Ops/sec
For Loop - v2 400.8 Ops/sec