From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: GNAT (GCC) Profile Guided Compilation
Date: Sun, 15 Jul 2012 10:15:35 +0300
Date: 2012-07-15T10:15:35+03:00 [thread overview]
Message-ID: <a6f90pFj55U1@mid.individual.net> (raw)
In-Reply-To: <e215fb37-2e94-464c-bfc0-2298a415d874@googlegroups.com>
On 12-07-15 02:40 , Keean Schupke wrote:
> After a bit of checking line-by-line to make sure I am using 'and
> then', 'or else' and 'constant' everywhere I can in the code, Ada is
> outperforming C++ when using profile-guided compilation for the first
> time. both C++ and Ada are getting about 40k simulations per second
> with normal compilation, C++ is achieving 56k simulations per second
> profile-guided, and Ada 57k per second.
Good news.
An Ada copmiler is of course free to implement the ordinary
"long-circuit" operators "and"/"or" using short-circuit code, if the
evaluation of the operands has no side effects. What are the operands
typically like in your program? Are they function calls, or simple
variables?
It seems to me that the general belief, regarding the expected relative
speeds of the short-circuit code versus the long-circuit code for
Boolean expressions with simple operands, is that the branch penalties
on modern processors are so large that the short-circuit form is not
obviously faster. This may explain why the Ada compiler is not using the
short-circuit code automatically.
Clearly, if the expression is "(simple operand likely to be True) and
(longer and longer expression)", at some point the short-circuit code
(or changing to "and then") will become faster than the long-circuit
code, whatever the branch penalty. This point will come sooner if
profile-guidance is used to reduce the branch penalty.
--
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
. @ .
next prev parent reply other threads:[~2012-07-15 7:15 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-29 9:17 GNAT (GCC) Profile Guided Compilation Keean Schupke
2012-06-29 9:34 ` Dmitry A. Kazakov
2012-06-29 10:01 ` Keean Schupke
2012-06-29 10:24 ` Keean Schupke
2012-06-29 12:26 ` stefan-lucks
2012-06-29 12:51 ` Keean Schupke
2012-06-29 12:05 ` Dmitry A. Kazakov
2012-06-29 10:48 ` Simon Wright
2012-06-29 11:14 ` Keean Schupke
2012-06-29 12:39 ` gautier_niouzes
2012-06-29 12:52 ` Keean Schupke
2012-06-29 14:14 ` gautier_niouzes
2012-06-29 15:05 ` gautier_niouzes
2012-06-29 17:03 ` Keean Schupke
2012-07-01 9:29 ` Georg Bauhaus
2012-07-01 17:45 ` Georg Bauhaus
2012-07-01 22:57 ` Keean Schupke
2012-07-02 17:15 ` Georg Bauhaus
2012-07-02 17:26 ` Keean Schupke
2012-07-02 23:48 ` Keean Schupke
2012-07-04 10:38 ` Georg Bauhaus
2012-07-04 10:57 ` Keean Schupke
2012-07-04 12:36 ` Mark Lorenzen
2012-07-04 12:38 ` Georg Bauhaus
2012-07-14 20:17 ` Keean Schupke
2012-07-14 20:33 ` Keean Schupke
2012-07-14 20:43 ` Niklas Holsti
2012-07-14 22:32 ` Keean Schupke
2012-07-14 23:40 ` Keean Schupke
2012-07-15 7:15 ` Niklas Holsti [this message]
2012-07-15 8:27 ` Keean Schupke
2012-07-18 10:01 ` Georg Bauhaus
2012-07-18 17:36 ` Keean Schupke
2012-07-19 5:42 ` Georg Bauhaus
2012-07-19 10:18 ` Keean Schupke
2012-07-15 11:02 ` Niklas Holsti
2012-07-15 12:48 ` Keean Schupke
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox