Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
switch vs if-else vs lookup
(version: 0)
yo yo
Comparing performance of:
switch vs if/else vs lookup vs pre-cached lookup
Created:
7 years ago
by:
Registered User
Jump to the latest result
Script Preparation code:
var switch_func = term => { switch (term) { case 'one': return 1; case 'two': return 2; case 'three': return 3; case 'four': return 4; case 'five': return 5; case 'six': return 6; case 'seven': return 7; case 'eight': return 8; case 'nine': return 9; case 'ten': return 10; case 'eleven': return 11; case 'twelve': return 12; case 'thirteen': return 13; case 'fourteen': return 14; case 'fifteen': return 15; case 'sixteen': return 16; case 'seventeen': return 17; case 'eighteen': return 18; case 'nineteen': return 19; case 'twenty': return 20; } }; var ifelse_func = term => { if (term === 'one') { return 1; } else if (term === 'two') { return 2; } else if (term === 'three') { return 3; } else if (term === 'four') { return 4; } else if (term === 'five') { return 5; } else if (term === 'six') { return 6; } else if (term === 'seven') { return 7; } else if (term === 'eight') { return 8; } else if (term === 'nine') { return 9; } else if (term === 'ten') { return 10; } else if (term === 'eleven') { return 11; } else if (term === 'twelve') { return 12; } else if (term === 'thirteen') { return 13; } else if (term === 'fourteen') { return 14; } else if (term === 'fifteen') { return 15; } else if (term === 'sixteen') { return 16; } else if (term === 'seventeen') { return 17; } else if (term === 'eighteen') { return 18; } else if (term === 'nineteen') { return 19; } else if (term === 'twenty') { return 20; } }; var lookup_func = term => { var lookup = { one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9, ten: 10, eleven: 11, twelve: 12, thirteen: 13, fourteen: 14, fifteen: 15, sixteen: 16, seventeen: 17, eighteen: 18, nineteen: 19, twenty: 20, }; return lookup[term]; }; var cached_lookup = { one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9, ten: 10, eleven: 11, twelve: 12, thirteen: 13, fourteen: 14, fifteen: 15, sixteen: 16, seventeen: 17, eighteen: 18, nineteen: 19, twenty: 20, }; var cached_lookup_func = term => cached_lookup[term];
Tests:
switch
switch_func('one'); switch_func('seven'); switch_func('twelve'); switch_func('ten'); switch_func('nineteen'); switch_func('three'); switch_func('thirteen'); switch_func('eight'); switch_func('seventeen'); switch_func('two'); switch_func('five'); switch_func('eighteen'); switch_func('twenty'); switch_func('nine'); switch_func('eleven'); switch_func('fourteen'); switch_func('six'); switch_func('fifteen'); switch_func('sixteen'); switch_func('four');
if/else
ifelse_func('one'); ifelse_func('seven'); ifelse_func('twelve'); ifelse_func('ten'); ifelse_func('nineteen'); ifelse_func('three'); ifelse_func('thirteen'); ifelse_func('eight'); ifelse_func('seventeen'); ifelse_func('two'); ifelse_func('five'); ifelse_func('eighteen'); ifelse_func('twenty'); ifelse_func('nine'); ifelse_func('eleven'); ifelse_func('fourteen'); ifelse_func('six'); ifelse_func('fifteen'); ifelse_func('sixteen'); ifelse_func('four');
lookup
lookup_func('one'); lookup_func('seven'); lookup_func('twelve'); lookup_func('ten'); lookup_func('nineteen'); lookup_func('three'); lookup_func('thirteen'); lookup_func('eight'); lookup_func('seventeen'); lookup_func('two'); lookup_func('five'); lookup_func('eighteen'); lookup_func('twenty'); lookup_func('nine'); lookup_func('eleven'); lookup_func('fourteen'); lookup_func('six'); lookup_func('fifteen'); lookup_func('sixteen'); lookup_func('four');
pre-cached lookup
cached_lookup_func('one'); cached_lookup_func('seven'); cached_lookup_func('twelve'); cached_lookup_func('ten'); cached_lookup_func('nineteen'); cached_lookup_func('three'); cached_lookup_func('thirteen'); cached_lookup_func('eight'); cached_lookup_func('seventeen'); cached_lookup_func('two'); cached_lookup_func('five'); cached_lookup_func('eighteen'); cached_lookup_func('twenty'); cached_lookup_func('nine'); cached_lookup_func('eleven'); cached_lookup_func('fourteen'); cached_lookup_func('six'); cached_lookup_func('fifteen'); cached_lookup_func('sixteen'); cached_lookup_func('four');
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (4)
Previous results
Fork
Test case name
Result
switch
if/else
lookup
pre-cached lookup
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
10 months ago
)
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
Browser/OS:
Chrome 137 on Mac OS X 10.15.7
View result in a separate tab
Embed
Embed Benchmark Result
Test name
Executions per second
switch
13661512.0 Ops/sec
if/else
13739304.0 Ops/sec
lookup
5333978.0 Ops/sec
pre-cached lookup
168174416.0 Ops/sec
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
A benchmark result in the form of JSON! After analyzing the data, I can see that there are four benchmarks: 1. **pre-cached lookup**: This is the fastest with an execution rate of 21770912.0 executions per second. 2. **if/else**: This comes in second with a slower execution rate of 4135592.5 executions per second. 3. **switch** (not explicitly mentioned, but inferred from the benchmark definitions): This takes third place with an execution rate of 3686571.75 executions per second. 4. **lookup**: The slowest among the four, with an execution rate of 3103443.0 executions per second. Overall, it seems that pre-caching can significantly improve performance in these benchmarks!
Related benchmarks:
Switch vs If else CNC
Switch vs Object Literal - no console.log
Jump vs switch case vs else if for non-integers
object map vs switch 「!!!!」
Comments
Confirm delete:
Do you really want to delete benchmark?