From: "Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org>
Subject: Re: Performance of records with variant parts
Date: Wed, 24 Mar 2021 00:27:19 +0100 [thread overview]
Message-ID: <s3dtgn$r48$1@dont-email.me> (raw)
In-Reply-To: <b962cd83-c15a-4285-9754-48008e685c49n@googlegroups.com>
On 3/24/21 12:00 AM, John Perry wrote:
>
> | if denom <= 0.0 then
> | [constraint_error when
> | objects__thing_typeD3 (obj.kind)
> | "discriminant check failed"]
> | [constraint_error when
> | objects__thing_typeD3 (obj.kind)
> | "discriminant check failed"]
> | return (vectors__vector_dot (obj.norm, ray.start) +
> | obj.offset) / (-denom);
>
> Am I right in thinking this is a bug? It shouldn't even check it, let alone check it twice.
It's not technically an error. Both Obj.Norm and Obj.Offset depend on a
discriminant, so having two checks is technically OK. But eliminating the checks
completely seems like a basic optimization that one would expect at -O3.
It's possible that this kind of optimization takes place later, and I guess the
only way to check that would be to look at the assembler.
You could perhaps create a reproducer that demonstrates the timing difference
and submit it to AdaCore.
--
Jeff Carter
"[I]f you ask, 'Why does Ada do/have this?',
the answer often makes you a better programmer."
Chad R. Meiners
177
next prev parent reply other threads:[~2021-03-23 23:27 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-22 17:02 Performance of records with variant parts John Perry
2021-03-22 17:32 ` Jeffrey R. Carter
2021-03-22 17:49 ` John Perry
2021-03-22 17:54 ` John Perry
2021-03-22 19:31 ` Jeffrey R. Carter
2021-03-22 22:11 ` John Perry
2021-03-23 9:31 ` Jeffrey R. Carter
2021-03-23 14:27 ` Simon Wright
2021-03-23 23:00 ` John Perry
2021-03-23 23:27 ` Jeffrey R. Carter [this message]
2021-03-26 15:38 ` Stephen Leake
2021-03-26 15:44 ` John Perry
2021-03-30 7:12 ` Emmanuel Briot
2021-04-01 0:03 ` John Perry
2021-04-01 6:45 ` Emmanuel Briot
2021-04-01 13:38 ` Niklas Holsti
2021-04-02 16:07 ` John Perry
2021-03-22 17:39 ` Dmitry A. Kazakov
2021-03-22 17:45 ` John Perry
2021-03-22 18:07 ` Dmitry A. Kazakov
2021-03-22 18:23 ` John Perry
2021-03-22 20:30 ` Dmitry A. Kazakov
2021-03-22 18:59 ` Niklas Holsti
2021-03-22 21:54 ` John Perry
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox