From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Surprise in array concatenation
Date: Tue, 6 Sep 2005 10:24:54 +0200
Date: 2005-09-06T10:24:30+02:00 [thread overview]
Message-ID: <qhiumx1tqqlf$.8pscy9zuykw9$.dlg@40tude.net> (raw)
In-Reply-To: wccfysjnoxv.fsf@shell01.TheWorld.com
On 05 Sep 2005 18:13:16 -0400, Robert A Duff wrote:
> But the Ada rule is _certainly_ not the "most efficient"!
>
> If all Strings start at 1, then we reduce the size of the array dope by
> 4 bytes. If the average String length in your program is, say, 20
> bytes, you're saving 4 bytes for every 24, or about 17% of the memory
> use, which is substantial. Saving memory generally speed up programs
> due to cache effects.
>
> It's really annoying to me that the compiler stores zillions of copies
> of the number 1 in memory (one copy for each String object), just
> because some oddball String _might_ start at other than 1.
>
> Furthermore, bounds checking would be much faster, because there would
> be no need to load the lower-bound from memory. Memory loads are often
> slow on modern machines.
>
> Furthermore, consider the code generated for 'Length: In Ada, it's
> something like:
>
> if X'First <= X'Last then
> X'Last - X'First + 1
> else
> 0
> end if;
>
> If X'First were known to be always 1, it would be:
>
> X'Last
>
> If X'First were known to be always 17, it would be:
>
> X'Last - 16
>
> These latter are branch-free code sequences. Branches are often slow on
> modern machines.
Right. Here is another example to the list: almost any binary operation on
strings should do:
J := B'First;
for I in A'Range loop
do something to A(I) with B(J);
J := J + 1; -- Can this overflow at the end of loop? (:-))
end loop;
or its equivalent. It would be much less pain if either A'First = B'First
(for some arrays, as a part of the contract), or at least array renaming
worked properly (could shift the bounds.)
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2005-09-06 8:24 UTC|newest]
Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-01 3:16 Surprise in array concatenation Gene
2005-09-01 7:55 ` Dmitry A. Kazakov
2005-09-01 8:02 ` Florian Weimer
2005-09-01 11:48 ` Georg Bauhaus
2005-09-01 12:02 ` Lutz Donnerhacke
2005-09-01 13:01 ` Georg Bauhaus
2005-09-01 15:54 ` Florian Weimer
2005-09-01 16:09 ` Robert A Duff
2005-09-05 8:38 ` Jean-Pierre Rosen
2005-09-05 23:52 ` Robert A Duff
2005-09-06 9:03 ` Jean-Pierre Rosen
2005-09-07 17:57 ` adaworks
2005-09-07 20:01 ` Robert A Duff
2005-09-08 8:08 ` Jacob Sparre Andersen
2005-09-07 22:46 ` Jeffrey Carter
2005-09-08 4:43 ` Simon Wright
2005-09-08 10:36 ` Georg Bauhaus
2005-09-08 13:47 ` Ed Falis
2005-09-08 17:03 ` Pascal Obry
2005-09-08 16:45 ` Jeffrey Carter
2005-09-08 19:37 ` Simon Wright
2005-09-08 6:32 ` adaworks
2005-09-08 9:09 ` Jean-Pierre Rosen
2005-09-08 16:56 ` Jeffrey Carter
2005-09-09 14:04 ` Bob Spooner
2005-09-09 16:17 ` adaworks
2005-09-23 23:04 ` Randy Brukardt
2005-09-14 8:57 ` Ole-Hjalmar Kristensen
2005-09-23 23:09 ` Randy Brukardt
2005-09-24 10:49 ` Larry Kilgallen
2005-09-24 20:27 ` Lurker
2005-09-25 0:20 ` Robert A Duff
2005-09-25 17:05 ` adaworks
2005-09-01 11:42 ` Georg Bauhaus
2005-09-01 13:59 ` Dmitry A. Kazakov
2005-09-01 15:36 ` Georg Bauhaus
2005-09-01 18:34 ` Dmitry A. Kazakov
2005-09-02 10:43 ` Georg Bauhaus
2005-09-02 13:11 ` Dmitry A. Kazakov
2005-09-02 14:23 ` Georg Bauhaus
2005-09-02 19:48 ` Dmitry A. Kazakov
2005-09-02 17:21 ` Björn Persson
2005-09-01 16:04 ` Robert A Duff
2005-09-01 18:06 ` Dmitry A. Kazakov
2005-09-02 10:42 ` Georg Bauhaus
2005-09-02 13:20 ` Dmitry A. Kazakov
2005-09-02 14:14 ` Georg Bauhaus
2005-09-02 19:48 ` Dmitry A. Kazakov
2005-09-03 20:01 ` Georg Bauhaus
2005-09-04 10:13 ` Dmitry A. Kazakov
2005-09-05 13:22 ` Georg Bauhaus
2005-09-05 15:50 ` Dmitry A. Kazakov
2005-09-05 18:20 ` Georg Bauhaus
2005-09-05 18:31 ` Georg Bauhaus
2005-09-06 8:20 ` Dmitry A. Kazakov
2005-09-06 11:52 ` Georg Bauhaus
2005-09-06 13:46 ` Dmitry A. Kazakov
2005-09-06 15:51 ` Georg Bauhaus
2005-09-06 21:32 ` Robert A Duff
2005-09-07 9:08 ` Dmitry A. Kazakov
2005-09-07 18:20 ` Georg Bauhaus
2005-09-07 19:07 ` Georg Bauhaus
2005-09-07 21:23 ` Dmitry A. Kazakov
2005-09-08 10:27 ` Georg Bauhaus
2005-09-08 11:39 ` Georg Bauhaus
2005-09-08 13:44 ` Dmitry A. Kazakov
2005-09-08 18:18 ` Georg Bauhaus
2005-09-09 10:06 ` Dmitry A. Kazakov
2005-09-09 12:26 ` Georg Bauhaus
2005-09-09 12:29 ` Georg Bauhaus
2005-09-01 8:48 ` Jean-Pierre Rosen
2005-09-01 15:57 ` Robert A Duff
2005-09-01 21:42 ` Gene
2005-09-01 22:56 ` tmoran
2005-09-05 15:53 ` Gene
2005-09-05 17:47 ` jimmaureenrogers
2005-09-05 22:13 ` Robert A Duff
2005-09-06 8:24 ` Dmitry A. Kazakov [this message]
2005-09-05 19:22 ` Jeffrey R. Carter
2005-09-05 21:54 ` Robert A Duff
2005-09-05 22:50 ` Larry Kilgallen
2005-09-05 23:46 ` Robert A Duff
2005-09-12 3:59 ` Dave Thompson
2005-09-06 16:02 ` Jeffrey Carter
2005-09-06 21:00 ` Robert A Duff
2005-09-06 5:38 ` Pascal Obry
2005-09-05 21:48 ` Robert A Duff
2005-09-06 5:25 ` tmoran
2005-09-06 14:58 ` Robert A Duff
2005-09-06 9:26 ` Georg Bauhaus
2005-09-06 15:00 ` Robert A Duff
2005-09-07 11:02 ` Thierry Pirot
2005-09-07 20:09 ` Robert A Duff
2005-09-06 13:22 ` Bob Spooner
2005-09-06 15:30 ` Robert A Duff
2005-09-06 16:12 ` Jeffrey Carter
2005-09-06 21:21 ` Robert A Duff
2005-09-02 20:19 ` Jeffrey R. Carter
2005-09-03 12:51 ` Dr. Adrian Wrigley
2005-09-03 14:08 ` Jacob Sparre Andersen
2005-09-05 8:34 ` Jean-Pierre Rosen
2005-09-05 9:32 ` Arrays indexed by fixed point types (Was: Surprise in array concatenation) Jacob Sparre Andersen
2005-09-05 11:07 ` Jean-Pierre Rosen
2005-09-05 15:12 ` Dr. Adrian Wrigley
2005-09-05 12:14 ` Dmitry A. Kazakov
2005-09-05 13:07 ` Jacob Sparre Andersen
2005-09-05 15:10 ` Dmitry A. Kazakov
2005-09-05 11:29 ` Surprise in array concatenation Dr. Adrian Wrigley
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox