delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/04/02/18:31:20

From: jestandi AT cs DOT indiana DOT edu (Jeff Standish)
Newsgroups: comp.os.msdos.djgpp
Subject: How is switch implemented?
Date: 2 Apr 1997 13:41:48 -0500
Organization: Computer Science, Indiana University
Lines: 31
Message-ID: <5hu99c$2t1@tuba.cs.indiana.edu>
NNTP-Posting-Host: tuba.cs.indiana.edu
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

I'm currently working on a piece of code that is time critical, and could
easily be done with a switch statement.  What I'm wondering is whether it
is safe to assume that in most circumstances, a compiler will implement
the cases as an indexed look up (assuming that the values for the cases
form a successive range, like 0 through 20, rather than a random collection
of values), using the value of the case as an index into a table of jump
addresses at the assembly level.  This method would obviously be more
efficient than a sequence of if-else's as I suspect would happen when
the cases are essentially random values.

I'm assuming that most intelligent compilers would try to use an jump
table, but I don't know for certain, and I'm not in the mood to compile,
disassemble, and try to read the machine code.  Besides, just because
this might happen for a trivial test program doesn't mean it will also
work for 40+ cases spread out over several hundred lines of code (which
is the minimum of what I expect to write).

And I'm asking this in a more general sense, since in addition to DJGPP I
also use Visual C++ (yes, yes, I know, spawn of the evil empire and all
that...).

Does anyone know enough about the internals of compilers these days to
answer this one?

Thanks
Jeff
-- 
-----------------------------------------------------------------------------
Jeff Standish                  http://www.cs.indiana.edu/hyplan/jestandi.html   
jestandi AT cs DOT indiana DOT edu              May your deeds with sword and axe
jlstandish AT acm DOT org                    Equal those with sheep and yaks

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019