[Beowulf] Re: A start in Parallel Programming?
David Mathog
mathog at caltech.edu
Tue Mar 13 17:07:39 PDT 2007
> Jim Lux <James.P.Lux at jpl.nasa.gov> wrote
>
> it's easy to write without GOTOs in FORTRAN...
>
> IF (0) 902,902,902
>
Spaghetti code goto was evil, but I miss computed goto. So long as
one was careful to exit every section with a goto to the same
exit point it was well structured and it was fast, even when there
were many destinations. Sure, in C you can do "the same thing" with a
switch/case construct, but you have to trust that the compiler
will recognize that the cases are 1,2,3,...N and optimize
with a look up table accordingly. I checked only once, about 15
years ago, and the resultant code was doing the equivalent of this:
if(i==1){}
else if(i==2){}
etc.
Hopefully things have improved since then. It is possible to force a
sort of computed goto in C (transfer control staying
within a function) but it involves pre-storing addresses of labels in
an array and then transferring control via a pointer retrieved
via an index into that array. It's too hideous to contemplate,
but if you must, look for "Audric" in this link:
http://www.allegro.cc/forums/print-thread/589282
Does any C compiler offer something like this:
#pragma FORCE_LOOKUP_TABLE
switch (i){
case 1:
case 2:
etc.
}
?
Regards,
David Mathog
mathog at caltech.edu
Manager, Sequence Analysis Facility, Biology Division, Caltech
More information about the Beowulf
mailing list