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 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 null input

     
    test(destructuringFn, null);
  • lodash null input

     
    test(lodashFn, null);
  • destructuring undefined input

     
    let input;
    test(destructuringFn, input);
  • lodash undefined input

     
    let input;
    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(lodashFn, 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 null input
    lodash null input
    destructuring undefined input
    lodash undefined input
    destructuring dynamic key
    lodash dynamic key

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 4 years ago)
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0
Firefox 77 on Ubuntu
View result in a separate tab
Test name Executions per second
destructuring with defaults, empty input 68897296.0 Ops/sec
lodash get, empty input 3063274.5 Ops/sec
destructuring with defaults, find item 18837910.0 Ops/sec
lodash get, find item 2160528.5 Ops/sec
destructuring null input 109657968.0 Ops/sec
lodash null input 53679824.0 Ops/sec
destructuring undefined input 111116376.0 Ops/sec
lodash undefined input 55228308.0 Ops/sec
destructuring dynamic key 19644854.0 Ops/sec
lodash dynamic key 2055996.5 Ops/sec