473,568 Members | 2,964 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Switch v If statement

Is a switch more efficient than an if statement? I observe thru the debugger
that a switch statement jumps directly to its case handler where as an if
statement examines all conditions sequentially. Is that a trick of the
debugger or is a switch quicker by O(n).
Nov 15 '05 #1
5 6099
"Alvin Bruney" <vapordan_spam_ me_not@hotmail_ no_spamhotmail. com> wrote in
message news:uy******** ******@tk2msftn gp13.phx.gbl...
Is a switch more efficient than an if statement? I observe thru the debugger that a switch statement jumps directly to its case handler where as an if
statement examines all conditions sequentially. Is that a trick of the
debugger or is a switch quicker by O(n).


No trick. The switch statement is basically a direct jump to one of many
targets using the content of an internal table and an index computed from
the switch expression. An if ... elseif ... elseif ... statement chain is
slower. However such a chain allows for complex composite conditions that
would be very difficult or impossible to handle using a switch statement.
Nov 15 '05 #2
I really wish C# allowed variables in the case; i.e. "case firstName". It
can optimize 'constant' case statements, but variables would be very nice.

Hilton

"Jip from Paris" <ji**********@h otmail.com> wrote in message
news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
"Alvin Bruney" <vapordan_spam_ me_not@hotmail_ no_spamhotmail. com> wrote in
message news:uy******** ******@tk2msftn gp13.phx.gbl...
Is a switch more efficient than an if statement? I observe thru the

debugger
that a switch statement jumps directly to its case handler where as an if statement examines all conditions sequentially. Is that a trick of the
debugger or is a switch quicker by O(n).


No trick. The switch statement is basically a direct jump to one of many
targets using the content of an internal table and an index computed from
the switch expression. An if ... elseif ... elseif ... statement chain is
slower. However such a chain allows for complex composite conditions that
would be very difficult or impossible to handle using a switch statement.

Nov 15 '05 #3
also confusing as hell.
"Hilton" <ab*@xyz.com> wrote in message
news:u7******** ******@TK2MSFTN GP12.phx.gbl...
I really wish C# allowed variables in the case; i.e. "case firstName". It
can optimize 'constant' case statements, but variables would be very nice.

Hilton

"Jip from Paris" <ji**********@h otmail.com> wrote in message
news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
"Alvin Bruney" <vapordan_spam_ me_not@hotmail_ no_spamhotmail. com> wrote in
message news:uy******** ******@tk2msftn gp13.phx.gbl...
Is a switch more efficient than an if statement? I observe thru the

debugger
that a switch statement jumps directly to its case handler where as an if statement examines all conditions sequentially. Is that a trick of the
debugger or is a switch quicker by O(n).


No trick. The switch statement is basically a direct jump to one of many
targets using the content of an internal table and an index computed

from the switch expression. An if ... elseif ... elseif ... statement chain is slower. However such a chain allows for complex composite conditions that would be very difficult or impossible to handle using a switch statement.


Nov 15 '05 #4
"Umpa Lumpa" <po********@127 .0.0.129> wrote:
"Hilton" <ab*@xyz.com> wrote in message
news:u7******** ******@TK2MSFTN GP12.phx.gbl...
I really wish C# allowed variables in the case; i.e. "case
firstName". It can optimize 'constant' case statements,
but variables would be very nice.


also confusing as hell.


Reminds me of how some menu systems used to work in BASIC.

GOTO 1000 + 100 * option

P.

--
www.CL4.org
Nov 15 '05 #5
You think a bunch of "if" statements make things clearer? Different views I
guess. I just view the "case" as a neat way of bundling up "if"
statements...

Hilton
"Umpa Lumpa" <po********@127 .0.0.129> wrote in message
news:O2******** ******@tk2msftn gp13.phx.gbl...
also confusing as hell.
"Hilton" <ab*@xyz.com> wrote in message
news:u7******** ******@TK2MSFTN GP12.phx.gbl...
I really wish C# allowed variables in the case; i.e. "case firstName". It
can optimize 'constant' case statements, but variables would be very nice.
Hilton

"Jip from Paris" <ji**********@h otmail.com> wrote in message
news:%2******** ********@TK2MSF TNGP09.phx.gbl. ..
"Alvin Bruney" <vapordan_spam_ me_not@hotmail_ no_spamhotmail. com> wrote in message news:uy******** ******@tk2msftn gp13.phx.gbl...
> Is a switch more efficient than an if statement? I observe thru the
debugger
> that a switch statement jumps directly to its case handler where as an if
> statement examines all conditions sequentially. Is that a trick of
the > debugger or is a switch quicker by O(n).

No trick. The switch statement is basically a direct jump to one of many targets using the content of an internal table and an index computed

from the switch expression. An if ... elseif ... elseif ... statement chain is slower. However such a chain allows for complex composite conditions that would be very difficult or impossible to handle using a switch statement.



Nov 15 '05 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

10
10893
by: Myster Ious | last post by:
Polymorphism replaces switch statements, making the code more compact/readable/maintainable/OO whatever, fine! What I understand, that needs to be done at the programming level, is this: a switch-case has a variable (most probably an enumeration) & associated symbols or integral value. Selection is made, base on what symbol/value the...
35
8300
by: Thomas Matthews | last post by:
Hi, My son is writing a program to move a character. He is using the numbers on the keypad to indicate the direction of movement: 7 8 9 4 5 6 1 2 3 Each number has a direction except for '5'. So in his switch statement, he omits a case for '5':
17
2804
by: prafulla | last post by:
Hi all, I don't have a copy of C standard at hand and so anyone of you can help me. I have always wondered how switch statements are so efficient in jumping to the right case (if any)? Can anybody point me to the innards of it please? Sorry if this is OT on clc and more relevant to comp.compilers. I am confused here too.
3
19730
by: pgraeve | last post by:
I am a convert from VB to C# so bear with me on this "conversion" question C# switch statement seems to be the closest relative to VB's Select Case. I used VB's Select Case statement liberally. Now I find myself wanting to use "Select Case" i.e., "switch" in C# regularly, but I always have to find another way b/c C#'s switch statement only...
27
5610
by: Yuriy Solodkyy | last post by:
Hi VS 2005 beta 2 successfully compiles the following: using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program {
25
18362
by: v4vijayakumar | last post by:
'continue' within switch actually associated with the outer 'while' loop. Is this behavior protable? int ch = '\n'; while (true) { switch(ch) { case '\n': cout << "test"; continue; } }
12
12288
by: | last post by:
Is it fine to call another method from Switch? Eg. Switch (stringVar) { case ("a"): somVar = "whatever"; Another_Method(); //call another method return;
2
1446
by: Phillip B Oldham | last post by:
What would be the optimal/pythonic way to subject an object to a number of tests (based on the object's attributes) and redirect program flow? Say I had the following: pets = {'name': 'fluffy', 'species': 'cat', 'size': 'small'} pets = {'name': 'bruno', 'species': 'snake', 'size': 'small'} pets = {'name': 'rex', 'species': 'dog', 'size':...
13
11789
by: Satya | last post by:
Hi everyone, This is the first time iam posting excuse me if iam making any mistake. My question is iam using a switch case statement in which i have around 100 case statements to compare. so just curious to find out is it effective to use this method?? or is there is any other alternative method present so that execution time and code size...
0
7693
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
0
7916
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. ...
1
7660
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
0
7962
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
0
6275
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
1
5498
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
5217
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert...
0
3651
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in...
1
2101
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.