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: one year ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Safari/605.1.15
Safari 16 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
destructuring with defaults, empty input 16394662.0 Ops/sec
lodash get, empty input 2589685.0 Ops/sec
destructuring with defaults, find item 14848909.0 Ops/sec
lodash get, find item 2355672.8 Ops/sec
destructuring null input 0.0 Ops/sec
lodash null input 9018978.0 Ops/sec
destructuring undefined input 0.0 Ops/sec
lodash undefined input 8901846.0 Ops/sec
destructuring dynamic key 13892219.0 Ops/sec
lodash dynamic key 2296507.8 Ops/sec