Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Performance of if-else, switch or map based conditioning

I was wondering about the performances of the following implementations of conditional structs in javascript.

Method 1:

 if(id==="camelCase"){     window.location.href = "http://www.thecamelcase.com"; }else if (id==="jsFiddle"){     window.location.href = "http://jsfiddle.net/"; }else if (id==="cricInfo"){     window.location.href = "http://cricinfo.com/"; }else if (id==="apple"){     window.location.href = "http://apple.com/"; }else if (id==="yahoo"){     window.location.href = "http://yahoo.com/"; }            

Method 2:

switch (id) { case 'camelCase':     window.location.href = "http://www.thecamelcase.com";     break; case 'jsFiddle':     window.location.href = "http://www.jsfiddle.net";     break; case 'cricInfo':     window.location.href = "http://www.cricinfo.com";     break; case 'apple':     window.location.href = "http://www.apple.com";     break; case 'yahoo':     window.location.href = "http://www.yahoo.com";     break;  } 

Method 3

var hrefMap = { camelCase : "http://www.thecamelcase.com", jsFiddle: "http://www.jsfiddle.net", cricInfo: "http://www.cricinfo.com", apple: "http://www.apple.com", yahoo: "http://www.yahoo.com" }; window.location.href = hrefMap[id]; 

Method 4

window.location.href = {     camelCase : "http://www.thecamelcase.com",     jsFiddle: "http://www.jsfiddle.net",     cricInfo: "http://www.cricinfo.com",     apple: "http://www.apple.com",     yahoo: "http://www.yahoo.com" }[id]; 

Probably Method 3 and 4 might have almost the same performance but just posting to confirm.

like image 225
aditya_gaur Avatar asked Dec 24 '11 13:12

aditya_gaur


People also ask

Is if-else or switch faster?

if-else Versus switch As it turns out, the switch statement is faster in most cases when compared to if-else , but significantly faster only when the number of conditions is large.

Which is faster switch or if-else C#?

yes , switch case works faster than if-else ladder , This is mainly because of the optimization of switch case. if-else need to be processed each line in order of how the user has defined it. For switch cases the compiler will use Branch table - Wikipedia which will provide faster execution.

Which is better switch or if-else in Java?

A switch statement is usually more efficient than a set of nested ifs. Deciding whether to use if-then-else statements or a switch statement is based on readability and the expression that the statement is testing.

Is switch a conditional?

switch is a type of conditional statement that will evaluate an expression against multiple possible cases and execute one or more blocks of code based on matching cases.


1 Answers

According to this JSBen.ch test, the switch setup is the fastest out of the provided methods (Firefox 8.0 and Chromium 15).

Methods 3 and 4 are slightly less fast, but it's hardly noticeable. Clearly, the if-elseif method is significantly slower (FireFox 8.0).

The same test in Chromium 15 does not show significant differences in performance between these methods. In fact, the if-elseif method seems to be the fastest method in Chrome.

Update

I have run the test cases again, with 10 additional entries. The hrefmap (methods 3 and 4) show a better performance.

If you want to implement the compare method in a function, method 3 would definitely win: Store the map in a variable, and refer to this variable at a later point, instead of reconstructing it.

like image 117
Rob W Avatar answered Sep 22 '22 21:09

Rob W