Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!wuarchive!udel!haven!decuac!grebyn!ckp From: ckp@grebyn.com (Checkpoint Technologies) Newsgroups: comp.lang.c Subject: Re: Efficiency Question Message-ID: <1991Feb26.042023.2097@grebyn.com> Date: 26 Feb 91 04:20:23 GMT References: <4bmBqau00Uh_M0aHgb@andrew.cmu.edu> <1991Feb25.181434.6462@ux1.cso.uiuc.edu> Organization: Grebyn Timesharing Lines: 51 rg2c+@andrew.cmu.edu (Robert Nelson Gasch) writes: >Since C gives you the opportunity to condense statements, I was wondering >what difference to the compiler these 'shortcuts' make. > > x = x + 1; can become > x += 1; which can be further condensed to > x++; There's not much reason to use the first form, that I can see. Unless you're a die-hard Fortran programmer. The second form as it stands has no real advantage over the third. On the other hand, consider this fragment: #define H_WIDTH 1 int x; /* current horizontal position */ /* I draw a (skinny) graphic figure of width H_WIDTH. Then: */ x += H_WIDTH; /* move drawing pen by figure width */ <- versus x++; The first conveys more semantics to the reader. The second *may* be faster. If so, that's tough luck, I still wouldn't use it. I might even be willing to argue that the second is *incorrect* in this case. In article <1991Feb25.181434.6462@ux1.cso.uiuc.edu> gordon@osiris.cso.uiuc.edu (John Gordon) writes: > In the above case, the last statement is definitely faster than the >first one. Because: in the first statement, the machine has to load 3 >values into 3 registers and deal with them, whereas in the last statement, >essentially only 1 register is being used. Sorry, this has a lot to do with the machine and compiler involved. Many will compile all three forms to exactly the same thing (which you admit later). I may make a generalization, that a lot of programmers make assumptions about what C compilers do, by observing what a particular implementaiton does. I prefer to assume that the C compiler will generate code to implement the algorithm I coded, rather than pick on it's instruction and register usage. I have plenty of other things to worry about. Disclaimer: I don't write real-time code in C. This may be an environment where nit picking is justified. I'd still rather find faster algorithms than agonize over such tiny optimizations. -- First comes the logo: C H E C K P O I N T T E C H N O L O G I E S / / \\ / / Then, the disclaimer: All expressed opinions are, indeed, opinions. \ / o Now for the witty part: I'm pink, therefore, I'm spam! \/