[v3] conditional tweak

Martin Sebor sebor@roguewave.com
Fri Nov 7 22:47:00 GMT 2003


Gabriel Dos Reis wrote:

...
> | This conditional actually does happen to have a significant impact
> | on performance -- fill() is called every time a number is inserted
> | into a stream, for example.
> 
> compared to the actual work for formatting?

Believe it or not (although it depends if you consider an improvement
of a few tenths of a percent significant and worth the uglification;
I don't mind __builtin_expect() so much but I would probably have
second thoughts about the #pragma since it would have to be guarded
in portable code).

> 
...
> I have no idea of how HP aCC $pragma works.  Can you display the actual
> work or is it covered by proprietary rules?

The #pragma is documented here(*). It can be set up to work analogously
to __builtin_expect. This use, for instance

     int foo (int n) {
         if (n < 2) {
     #pragma ESTIMATED_FREQUENCY 0
             return 1;
         }
         return n * foo (n - 1);
     }

is equivalent to gcc's

     int foo (int n) {
         if (__builtin_expect (n < 2, false)) {
             return 1;
         }
         return n * foo (n - 1);
     }

http://docs.hp.com/hpux/onlinedocs/B3901-90008/00/00/44-con.html#bgedagfi

Martin




More information about the Libstdc++ mailing list