HTML Preparation code:
AخA
 
1
<script src="https://cdn.jsdelivr.net/lodash/4/lodash.min.js"></script>
Script Preparation code:
x
 
function destructuringFn(input) {
  const { contextMenu: { data: { documents = [] } = {} } = {} } = input;
  return documents;
}
function destructuringFnDynamic(input, key) {
  const { contextMenu: { data: { [key]: documents = [] } = {} } = {} } = input;
  return documents;
}
function lodashFn(input) {
  const documents = _.get(input, 'contextMenu.data.documents', []);
  return documents;
}
function lodashFnDynamic(input, key) {
  const documents = _.get(input, `contextMenu.data.${key}`, []);
  return documents;
}
function lodashFnDynamicArray(input, key) {
  const documents = _.get(input, ['contextMenu', 'data', 'key'], []);
  return documents;
}
let paths = {};
function lodashFnDynamicCachedArray(input, key) {
  paths[key] = paths[key] || _.toPath(`contextMenu.data.${key}`);
  const documents = _.get(input, paths[key], []);
  return documents;
}
function test(fn, input, key) {
  fn(input, key);
}
Tests:
  • destructuring with defaults, empty input

     
    test(destructuringFn, {});
  • lodash get, empty input

     
    test(lodashFn, {});
  • destructuring with defaults, find item

     
    const input = { contextMenu: { data: { documents: [{ id: 'doc' }] } } };
    test(destructuringFn, input);
  • lodash get, find item

     
    const input = { contextMenu: { data: { documents: [{ id: 'doc' }] } } };
    test(lodashFn, input);
  • destructuring dynamic key

     
    const input = { contextMenu: { data: { documents: [{ id: 'doc' }] } } };
    test(destructuringFn, input, 'documents');
  • lodash dynamic key

     
    const input = { contextMenu: { data: { documents: [{ id: 'doc' }] } } };
    test(lodashFnDynamic, input, 'documents');
  • lodash dynamic key using array

     
    const input = { contextMenu: { data: { documents: [{ id: 'doc' }] } } };
    test(lodashFnDynamicArray, input, 'documents');
  • lodash dynamic key using manually cached array

     
    const input = { contextMenu: { data: { documents: [{ id: 'doc' }] } } };
    test(lodashFnDynamicCachedArray, input, 'documents');
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    destructuring with defaults, empty input
    lodash get, empty input
    destructuring with defaults, find item
    lodash get, find item
    destructuring dynamic key
    lodash dynamic key
    lodash dynamic key using array
    lodash dynamic key using manually cached array

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 months ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Chrome 131 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
destructuring with defaults, empty input 158829328.0 Ops/sec
lodash get, empty input 13713576.0 Ops/sec
destructuring with defaults, find item 24543030.0 Ops/sec
lodash get, find item 8402243.0 Ops/sec
destructuring dynamic key 24512064.0 Ops/sec
lodash dynamic key 4614469.0 Ops/sec
lodash dynamic key using array 14741652.0 Ops/sec
lodash dynamic key using manually cached array 14933426.0 Ops/sec