By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
 440,016 Members | 2,265 Online
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,016 IT Pros & Developers. It's quick & easy.

# Which of switch statement and if-else statement takes less time to execute?

 P: n/a Which of switch statement and if-else statement takes less time to execute? Nov 15 '05 #1
Share this Question
18 Replies

 P: n/a sw*******@gmail.com wrote on 29/07/05 : Which of switch statement and if-else statement takes less time to execute? There is no definitve answer to this question. Dd some tests and measurements in known conditions. -- Emmanuel The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html The C-library: http://www.dinkumware.com/refxc.html "C is a sharp tool" Nov 15 '05 #2

 P: n/a (supersedes ) sw*******@gmail.com wrote on 29/07/05 : Which of switch statement and if-else statement takes less time to execute? There is no definitve answer to this question. Do some tests and measurements in known conditions. -- Emmanuel The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html The C-library: http://www.dinkumware.com/refxc.html ..sig under repair Nov 15 '05 #3

 P: n/a I am trying the same.Please help me out Thanks for your reply Bhanu Nov 15 '05 #4

 P: n/a In article <11*********************@g44g2000cwa.googlegroups. com>, wrote: Which of switch statement and if-else statement takes less time to execute? The difference between them pales in comparison to other issues such as algorithm choice. That being said, switch and if-else do different things. If you have a two-way condition, use if-else. If you have three or more cases, use switch. Trying to express a switch as a chain of if-else's is unlikely to be better than a switch statement. The only time this should be considered is if you know that one case out of many is statistically far more likely to occur. Then you might consider testing for that one case and using switch on the rest. -- 7842++ Nov 15 '05 #5

 P: n/a "Bhan" writes: I am trying the same.Please help me out Thanks for your reply Bhanu You are trying the same as what? Provide some context. Don't assume that we can see the article to which you're replying. And follow the newsgroup a while before posting. If you had done so, you would have seen the following hundreds of times: If you want to post a followup via groups.google.com, don't use the broken "Reply" link at the bottom of the article. Click on "show options" at the top of the article, then click on the "Reply" at the bottom of the article headers. -- Keith Thompson (The_Other_Keith) ks***@mib.org San Diego Supercomputer Center <*> We must do something. This is something. Therefore, we must do this. Nov 15 '05 #6

 P: n/a "Keith Thompson" wrote in message news:ln************@nuthaus.mib.org... "Bhan" writes: I am trying the same.Please help me out Thanks for your reply Bhanu You are trying the same as what? Provide some context. Don't assume that we can see the article to which you're replying. He didn't have enough time to provide context... There was only 5 minutes left for him to complete his online quiz and he needed the answers quick! Besides, the question was asked in the message subject... can't you read? :-) Nov 15 '05 #7

 P: n/a In article <11*********************@g44g2000cwa.googlegroups. com>, sw*******@gmail.com wrote: Which of switch statement and if-else statement takes less time to execute? Use a profiler. Try both ways and measure the difference in speed. If you don't have a profiler, call the function you try to improve hundred times instead of once only and use a stopwatch. Or call it thousand times. Then measure. Nov 15 '05 #8

 P: n/a wrote Which of switch statement and if-else statement takes less time to execute? Just depends. A very short switch will probaly be compiled to exactly the same code as the corresponding if ... else. A longer switch may use a jump table, if the constants in the case are small enough. Usually this will be a little bit faster than if ... else. Nov 15 '05 #9

 P: n/a Anonymous 7843 wrote: Trying to express a switch as a chain of if-else's is unlikely to be better than a switch statement. The only time this should be considered is if you know that one case out of many is statistically far more likely to occur. ....or if the condition may change between tests and you want to take it into account. I would not recommend it, though. It is hard to debug. Peter Nov 15 '05 #10

 P: n/a swaroo...@gmail.com wrote: Which of switch statement and if-else statement takes less time to execute? This is the wrong question to ask. You don't decide to use a switch over an if-else chain (or vice-versa) based on performance; for one thing, the performance difference, if any, will not be consistent from case to case. Secondly, the intent of the code may be obscured by using an inappropriate construct, making it harder to read and understand. Use a switch when you need a multiway branch based on a single integral value; use an if-else chain for everything else. For example, writing switch(a < b) { case 1: /* true */ /* do something */ break; case 0: /* false */ /* do something else */ break; } is silly and a little obfuscatory even if it buys you an extra cycle; writing if (a < b) /* do something */ else /* do something else */ is clearer and more straightforward. By contrast, even though there's nothing wrong with writing if (a == 1) /* do something */ else if (a == 2) /* do something else */ else if (a == 3) /* do yet another thing */ .... this is the kind of situation for which the switch statement was invented in the first place: switch(a) { case 1: /* do something */ break; case 2: /* do something else */ break; case 3: /* do yet another thing */ break; ... } Nov 15 '05 #11

 P: n/a If you know the answer tell me. Else keep quite. Mark wrote: "Keith Thompson" wrote in message news:ln************@nuthaus.mib.org... "Bhan" writes: I am trying the same.Please help me out Thanks for your reply Bhanu You are trying the same as what? Provide some context. Don't assume that we can see the article to which you're replying. He didn't have enough time to provide context... There was only 5 minutes left for him to complete his online quiz and he needed the answers quick! Besides, the question was asked in the message subject... can't you read? :-) Nov 15 '05 #12

 P: n/a *** rude top-posting fixed *** Bhan wrote: Mark wrote: "Keith Thompson" wrote in message "Bhan" writes: I am trying the same.Please help me out You are trying the same as what? Provide some context. Don't assume that we can see the article to which you're replying. He didn't have enough time to provide context... There was only 5 minutes left for him to complete his online quiz and he needed the answers quick! Besides, the question was asked in the message subject... can't you read? :-) If you know the answer tell me. Else keep quite. You ARE the rude one. There is still no question to answer. Message subjects are not necessarily visible when reading a message. -- Chuck F (cb********@yahoo.com) (cb********@worldnet.att.net) Available for consulting/temporary embedded and systems. USE worldnet address! Nov 15 '05 #13

 P: n/a In article <11**********************@g47g2000cwa.googlegroups .com>, Bhan wrote:If you know the answer tell me. The answer is 42. Else keep quite. Quite what? Nov 15 '05 #14

 P: n/a CBFalconer wrote: *** rude top-posting fixed *** Bhan wrote: Mark wrote: "Keith Thompson" wrote in message "Bhan" writes:> I am trying the same.Please help me out You are trying the same as what? Provide some context. Don't assume that we can see the article to which you're replying. He didn't have enough time to provide context... There was only 5 minutes left for him to complete his online quiz and he needed the answers quick! Besides, the question was asked in the message subject... can't you read? :-) If you know the answer tell me. Else keep quite. You ARE the rude one. There is still no question to answer. Message subjects are not necessarily visible when reading a message. I liked the rude guy who told you that you did *not* know anything about programming. ;-) What a loser!!! Besides which...the OP's question was implementation dependent and *not* covered by the C standard. -- +----------------------------------------------------------------+ | Charles and Francis Richmond It is moral cowardice to leave | | undone what one perceives right | | richmond at plano dot net to do. -- Confucius | +----------------------------------------------------------------+ Nov 15 '05 #15

 P: n/a On Fri, 29 Jul 2005 06:45:40 -0700, swaroophr wrote: Which of switch statement and if-else statement takes less time to execute? That depends on what code your compiler decides to generate for each one and the environment (e.g. processor model) you are running the code on. Different compilers can generate different code, the same compiler can generate different code when given different options. The code the compilergenerates for these will of course depend on the exact tests being performed in each case, it can also depend on the code around each statement. Of course for equivalent if-else and switch statements a compiler could reasonably generate the same output code. So there is no general answer to your question. For a particualr combinatoin of code, compiler, compiler options and execution environment the only reasonable way of geting an answer is to measure both and compare them. Even that may not be conclusive, the results can depend enormously on your input data. E.g. in an if-else chain that is translated fairly directly by the compiler, if a lot of the time the first test matches it will be fast, if a lot of the time the last test matches or no tests match it is likely to be slower. The best approach is usually to express what you want in the clearest way. It is very often the case that is clearer to read is also easier for the compiler to optimise. Lawrence Nov 15 '05 #16

 P: n/a Bhan wrote: If you know the answer tell me. Else keep quite. *paaaalonk* Brian Nov 15 '05 #17

 P: n/a In article <11**********************@g47g2000cwa.googlegroups .com>, "Bhan" wrote: If you know the answer tell me. Else keep quite. I think there is an attitude problem here, and it won't get you anywhere. Nov 15 '05 #18

 P: n/a Bhan wrote: If you know the answer tell me. Else keep quite. If you can be polite, continue writing... -- one's freedom stops where other's begin Giannis Papadopoulos http://dop.users.uth.gr/ University of Thessaly Computer & Communications Engineering dept. Nov 15 '05 #19

### This discussion thread is closed

Replies have been disabled for this discussion.