HTML Preparation code:
x
 
1
2
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
Script Preparation code:
 
var obj = Array(1000)
  .fill()
  .reduce((acc, curr, i) => {
    acc[i] = i;
    return acc;
  }, {});
var predicate = v => v % 2 === 0;
Tests:
  • _.pickBy

     
    _.pickBy(obj, predicate);
  • native

     
    Object.entries(obj).reduce((acc, [k, v]) => {
      if (predicate(v)) acc[k] = v;
      return acc;
    }, {});
  • soy

     
    Object.fromEntries(Object.entries(obj).filter(([k, v]) => predicate(v)));
  • iterate keys

     
    function pickBy(object, predicate) {
        const obj = {};
        for (const key in object) {
            if (object[key] && predicate(object[key])) {
                obj[key] = object[key];
            }
        }
        return obj;
    }
    pickBy(obj, predicate);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    _.pickBy
    native
    soy
    iterate keys

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 years ago)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36
Chrome 94 on Linux
View result in a separate tab
Test name Executions per second
_.pickBy 18099.1 Ops/sec
native 8056.2 Ops/sec
soy 8000.9 Ops/sec
iterate keys 33236.8 Ops/sec