comp.lang.ada
 help / color / mirror / Atom feed
From: csampson@inetworld.net (Charles H. Sampson)
Subject: Re: Efficiency of code generated by Ada compilers
Date: Tue, 10 Aug 2010 23:42:54 -0700
Date: 2010-08-10T23:42:54-07:00	[thread overview]
Message-ID: <1jn17h6.1q1szxwqifwdkN%csampson@inetworld.net> (raw)
In-Reply-To: wcchbj4j09y.fsf@shell01.TheWorld.com

Robert A Duff <bobduff@shell01.TheWorld.com> wrote:

> csampson@inetworld.net (Charles H. Sampson) writes:
> 
> > Robert A Duff <bobduff@shell01.TheWorld.com> wrote:
> >
> >      I'm surprised, Bob.  Are you saying that you signed integers in
> > preference to a modular type for a variable that cycles?
> 
> Yes.  Unless I'm forced to use modular for some other reason
> (e.g. I need one extra bit).
> 
> >...I use
> > modular-typed variables and, if I've got my engineer's hat on, write
> >
> >      I := I + 1;  -- Modular variable.  Wraps.
> 
> You're not alone.  Even Tucker has advocated using modular
> types for this sort of thing.
> 
> But I think an explicit "mod N" is clearer than a comment.
> 
> Variables that cycle are rare, so should be noted explicitly
> in the code.  And, as Dmitry noted, modular types only work
> when the lower bound is 0.  It's not unreasonable to have
> a circular buffer indexed by a range 1..N.
> 
> See my point?  Still "surprised"?
>
     I hope you didn't read my profession of surprise as being the same
as "Wow!  Bob did something really stupid."  I just thought you would be
one of the people (like me) who uses every feature of Ada whenever
there's an opportunity.

     For the record, my uses of modular types have been as indexes into
circular buffers.  I think these buffers have always been my own
invention, in support of a requirement but not a requirement in
themselves.  I'm not sure what I might do if it were natural, or
required, to have a circular structure whose lower index is not 0.  I
learned to program on very slow machines and I've never been able to
shake efficiency concerns.  I've already thought of a couple of pretty
unnatural things to do in order to achieve decent efficiency, efficiency
that, as usual, is totally unnecessary in the problem domain.
> 
> ...  Can anybody recall the definition of "not" on modular
> types, when the modulus is not a power of 2, without
> looking it up?  Hint: It makes no sense.  The only feature
> that's worse than "modular types" is "modular types with a
> non-power-of-2 modulus".  ;-)

     Actually, those circular buffers of mine have often had sizes that
are not powers of two.   The compiler I was using generated pretty
decent code for them.

     Regarding what I read as your main complaint, very late in the Ada
95 effort I submitted a comment that the proposed modular types were an
uncomfortable merger of two ideas: modular types and bit twiddling.
Since there was no obvious relation between those two ideas (weak
cohesion, as it were), I requested that two distinct types be used
instead.  I have no  idea what the ARG thought of the merits of my
comment, but even if they thought is was the most brilliant comment they
had received, I submitted it much to late to have any hope of its being
acted on.

                        Charlie
-- 
All the world's a stage, and most 
of us are desperately unrehearsed.  Sean O'Casey



  parent reply	other threads:[~2010-08-11  6:42 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-06 20:21 Efficiency of code generated by Ada compilers Elias Salomão Helou Neto
2010-08-06 20:24 ` (see below)
2010-08-06 23:14 ` Shark8
2010-08-07  7:53 ` Dmitry A. Kazakov
2010-08-10 13:52   ` Elias Salomão Helou Neto
2010-08-10 14:24     ` Shark8
2010-08-10 14:28     ` Shark8
2010-08-10 15:01     ` Robert A Duff
2010-08-10 15:14       ` Yannick Duchêne (Hibou57)
2010-08-10 18:32         ` Robert A Duff
2010-08-10 15:10     ` Georg Bauhaus
2010-08-10 15:32     ` Dmitry A. Kazakov
2010-08-10 22:26     ` Randy Brukardt
2010-08-20  7:22       ` Yannick Duchêne (Hibou57)
2010-08-08 14:03 ` Gene
2010-08-08 15:49   ` Robert A Duff
2010-08-08 17:13     ` Charles H. Sampson
2010-08-08 18:11       ` Dmitry A. Kazakov
2010-08-08 20:51       ` Robert A Duff
2010-08-08 22:10         ` (see below)
2010-08-08 22:22           ` Robert A Duff
2010-08-09  4:46         ` Yannick Duchêne (Hibou57)
2010-08-09  5:52         ` J-P. Rosen
2010-08-09 13:28           ` Robert A Duff
2010-08-09 18:42             ` Jeffrey Carter
2010-08-09 19:05               ` Robert A Duff
2010-08-10 10:00                 ` Jacob Sparre Andersen
2010-08-10 12:39                   ` Robert A Duff
2010-08-09 19:33             ` Yannick Duchêne (Hibou57)
2010-08-09 21:42               ` Robert A Duff
2010-08-10 12:26         ` Phil Clayton
2010-08-10 12:57           ` Yannick Duchêne (Hibou57)
2010-08-10 14:03             ` Elias Salomão Helou Neto
2010-08-10 14:27               ` Yannick Duchêne (Hibou57)
2010-08-10 22:50                 ` anon
2010-08-10 23:28                   ` Yannick Duchêne (Hibou57)
2010-08-10 23:38                     ` Yannick Duchêne (Hibou57)
2010-08-11  7:06                       ` Niklas Holsti
2010-08-11 11:58                         ` anon
2010-08-11 12:37                           ` Georg Bauhaus
2010-08-11 13:13                         ` Robert A Duff
2010-08-11 23:49                           ` Randy Brukardt
2010-08-10 14:31               ` Shark8
2010-08-11  7:14               ` Charles H. Sampson
2010-08-11  6:42         ` Charles H. Sampson [this message]
2010-08-08 22:35     ` tmoran
2010-08-09 13:53       ` Robert A Duff
2010-08-09 17:59         ` tmoran
2010-08-09 19:36           ` Yannick Duchêne (Hibou57)
2010-08-09 21:38             ` Robert A Duff
2010-08-11  7:42       ` Charles H. Sampson
2010-08-11 13:38         ` Robert A Duff
2010-08-12  7:48           ` Charles H. Sampson
2010-08-12  8:08             ` Ludovic Brenta
2010-08-12 17:10               ` Charles H. Sampson
2010-08-12 18:06                 ` Jeffrey Carter
2010-08-11 18:49         ` Simon Wright
2010-08-12  7:54           ` Charles H. Sampson
2010-08-12  8:36             ` Dmitry A. Kazakov
2010-08-12 11:04             ` Brian Drummond
2010-08-12 19:23             ` Simon Wright
2010-08-12 20:21               ` (see below)
2010-08-13 15:08                 ` Elias Salomão Helou Neto
2010-08-13 15:10                   ` Elias Salomão Helou Neto
2010-08-13 18:01                     ` Georg Bauhaus
2010-08-13 19:52                       ` Robert A Duff
2010-08-14  9:44                         ` Georg Bauhaus
2010-08-13 20:22                     ` Robert A Duff
2010-08-14  1:34                       ` Randy Brukardt
2010-08-14  7:18                         ` anon
2010-08-13 21:57                     ` Jeffrey Carter
2010-08-13 22:37                       ` Yannick Duchêne (Hibou57)
2010-08-13 22:43                         ` Yannick Duchêne (Hibou57)
2010-08-13 23:29                         ` tmoran
2010-08-14  0:02                           ` Yannick Duchêne (Hibou57)
2010-08-14  0:16                             ` (see below)
2010-08-14 10:47                             ` Brian Drummond
2010-08-14 13:58                               ` Yannick Duchêne (Hibou57)
2010-08-15  0:23                                 ` Brian Drummond
2010-08-14 14:51                               ` (see below)
2010-08-15  0:58                                 ` Brian Drummond
2010-08-15  1:58                                   ` (see below)
2010-08-15 10:31                                     ` Brian Drummond
2010-08-13 15:37                   ` Dmitry A. Kazakov
2010-08-16 13:29                     ` Elias Salomão Helou Neto
2010-08-16 14:09                       ` Dmitry A. Kazakov
2010-08-18 14:00                         ` Elias Salomão Helou Neto
2010-08-18 16:38                           ` Dmitry A. Kazakov
2010-08-19 18:52                             ` Elias Salomão Helou Neto
2010-08-19 19:48                               ` Dmitry A. Kazakov
2010-08-13 16:58                   ` (see below)
2010-08-14 16:13                   ` Charles H. Sampson
2010-08-16 13:45                     ` Elias Salomão Helou Neto
2010-08-15 12:32 ` Florian Weimer
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox