[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