Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Iteration Suite
(version: 1)
Iterate through a collection using a variety of methods.
Comparing performance of:
Lodash FindKey vs Direct Access vs Object Entries
Created:
5 years ago
by:
Registered User
Jump to the latest result
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
Tests:
Lodash FindKey
var event = { "Note_On": {prefix: 0x90, createMessage(channel, note, velocity) {return [[this.prefix+channel-1, note, velocity]]}}, "Note_Off": {prefix: 0x80, createMessage(channel, note, velocity) {return [[this.prefix+channel-1, note, velocity]]}}, "Note_AT": {prefix: 0xA0, createMessage(channel, note, velocity) {return [[this.prefix+channel-1, note, velocity]]}}, "Bank_Select": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x0, 0x20, channel, value)}}, "Mod_Wheel": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x1, 0x21, channel, value)}}, "Breath": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x2, 0x22, channel, value)}}, "Foot_Pedal": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x4, 0x24, channel, value)}}, "Portamento_Time": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x5, 0x25, channel, value)}}, "Data_Entry": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x6, 0x26, channel, value)}}, "Channel_Volume": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x7, 0x27, channel, value)}}, "Balance": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x8, 0x28, channel, value)}}, "Pan": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x0a, 0x2a, channel, value)}}, "Expression": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x0b, 0x2b, channel, value)}}, "Effect_1": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0xc, 0x2c, channel, value)}}, "Effect_2": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0xd, 0x2d, channel, value)}} } let y = _.findKey(event, function(e, f) { return e.prefix === 0xB0 && f==="Effect_2" }) let y2 = event[y]
Direct Access
var event = { "Note_On": {prefix: 0x90, createMessage(channel, note, velocity) {return [[this.prefix+channel-1, note, velocity]]}}, "Note_Off": {prefix: 0x80, createMessage(channel, note, velocity) {return [[this.prefix+channel-1, note, velocity]]}}, "Note_AT": {prefix: 0xA0, createMessage(channel, note, velocity) {return [[this.prefix+channel-1, note, velocity]]}}, "Bank_Select": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x0, 0x20, channel, value)}}, "Mod_Wheel": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x1, 0x21, channel, value)}}, "Breath": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x2, 0x22, channel, value)}}, "Foot_Pedal": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x4, 0x24, channel, value)}}, "Portamento_Time": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x5, 0x25, channel, value)}}, "Data_Entry": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x6, 0x26, channel, value)}}, "Channel_Volume": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x7, 0x27, channel, value)}}, "Balance": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x8, 0x28, channel, value)}}, "Pan": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x0a, 0x2a, channel, value)}}, "Expression": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x0b, 0x2b, channel, value)}}, "Effect_1": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0xc, 0x2c, channel, value)}}, "Effect_2": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0xd, 0x2d, channel, value)}} } let y2 = event["Effect_2"]
Object Entries
var event = { "Note_On": {prefix: 0x90, createMessage(channel, note, velocity) {return [[this.prefix+channel-1, note, velocity]]}}, "Note_Off": {prefix: 0x80, createMessage(channel, note, velocity) {return [[this.prefix+channel-1, note, velocity]]}}, "Note_AT": {prefix: 0xA0, createMessage(channel, note, velocity) {return [[this.prefix+channel-1, note, velocity]]}}, "Bank_Select": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x0, 0x20, channel, value)}}, "Mod_Wheel": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x1, 0x21, channel, value)}}, "Breath": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x2, 0x22, channel, value)}}, "Foot_Pedal": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x4, 0x24, channel, value)}}, "Portamento_Time": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x5, 0x25, channel, value)}}, "Data_Entry": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x6, 0x26, channel, value)}}, "Channel_Volume": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x7, 0x27, channel, value)}}, "Balance": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x8, 0x28, channel, value)}}, "Pan": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x0a, 0x2a, channel, value)}}, "Expression": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0x0b, 0x2b, channel, value)}}, "Effect_1": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0xc, 0x2c, channel, value)}}, "Effect_2": {prefix: 0xB0, createMessage(channel, value) {return createCCMessage(this.prefix, 0xd, 0x2d, channel, value)}} } let y2 for (const [key, value] of Object.entries(event)) { if (value.prefix === 0xB0 && key==="Effect_2"){ y2 = {[key]: value} } }
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (3)
Previous results
Fork
Test case name
Result
Lodash FindKey
Direct Access
Object Entries
Fastest:
N/A
Slowest:
N/A
Latest run results:
No previous run results
This benchmark does not have any results yet. Be the first one
to run it!
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
The benchmark results show that the test "Object Entries" is performed at different execution rates, with Chrome 87 browser on Mac OS X 11.0.1 device platform executing the test at approximately: * 808554496 executions per second * 1795741 executions per second * 1157015 executions per second It appears that there are variations in the execution rate of this specific benchmark, possibly due to differences in system resources or configuration. To provide a more informed answer, I would need more information about the expected behavior or threshold for the "Object Entries" test. However, based on these results, we can say that: * The execution rates vary significantly between runs. * Chrome 87 browser is consistently performing well on this test. * There are no apparent issues with the benchmark itself. Please provide more context or information about what you would like me to infer from these results!
Related benchmarks:
benchmark--------7
Array immutable union: lodash union vs flatten and creating a new set
Array immutable union: set from lodash union vs set from lodash flatten
Native array length vs Lodash's isEmpty
object iteration pravin
Comments
Confirm delete:
Do you really want to delete benchmark?