From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Introductory Presentations, especially aimed at C++ programmers!
Date: Tue, 13 Dec 2016 17:05:53 -0600
Date: 2016-12-13T17:05:53-06:00 [thread overview]
Message-ID: <o2push$5vp$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: o2pr84$fis$1@dont-email.me
"Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org> wrote in message
news:o2pr84$fis$1@dont-email.me...
...
> return Buffer & Get_Line;
This does dynamic allocation of some sort under the covers, and in any case
copies the contents of both parts of the string. The version Bob shows is
more complicated in order to control the amount of stack space used, and
appears to be designed to maximize the use of stack space rather than
allocated temporaries for GNAT. That seems like a win for their
implementation.
In Janus/Ada, both of these formulations would do a heck of a lot of dynamic
allocation under the covers (anything dynamically sized is allocated from a
storage pool ultimately). [That's what I was thinking of when I said
"dynamically allocated".] & of unconstrained strings is VERY expensive, so I
would write a routine similar to the one Bob showed, but I'd use slicing
rather than & to create the final result. (Given the general nature of
Get_Line, and the way it is used, it will be on some program's critical
path, so it can never be fast enough.) [I used future tense as this
particular Ada 2005 change hasn't yet made it into Janus/Ada.]
Conclusion: I don't see any difference between Bob's version and yours in
terms of dynamic memory allocation needed.
Randy.
next prev parent reply other threads:[~2016-12-13 23:05 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-10 12:24 Introductory Presentations, especially aimed at C++ programmers! John McCabe
2009-07-10 21:49 ` jimmaureenrogers
2009-07-10 23:37 ` wwilson
2009-07-11 0:07 ` jimmaureenrogers
2009-07-12 4:00 ` wwilson
2009-07-11 8:15 ` Stephen Leake
2009-07-15 6:43 ` Jean-Pierre Rosen
2016-12-07 17:06 ` john
2016-12-07 17:44 ` Luke A. Guest
2016-12-07 18:35 ` Jeffrey R. Carter
2016-12-07 23:03 ` Randy Brukardt
2016-12-07 23:47 ` Jeffrey R. Carter
2016-12-08 0:08 ` Paul Rubin
2016-12-09 22:01 ` Randy Brukardt
2016-12-09 22:18 ` Jeffrey R. Carter
2016-12-13 0:53 ` Randy Brukardt
2016-12-13 3:21 ` Jeffrey R. Carter
2016-12-13 21:15 ` Robert A Duff
2016-12-13 22:05 ` Jeffrey R. Carter
2016-12-13 22:52 ` Robert A Duff
2016-12-14 0:02 ` Jeffrey R. Carter
2016-12-13 23:05 ` Randy Brukardt [this message]
2016-12-14 0:13 ` Jeffrey R. Carter
2016-12-14 22:48 ` Randy Brukardt
2016-12-15 0:00 ` Jeffrey R. Carter
2016-12-15 10:46 ` Maciej Sobczak
2016-12-16 7:37 ` Paul Rubin
2016-12-15 20:14 ` Niklas Holsti
2016-12-15 20:27 ` Jeffrey R. Carter
2016-12-15 21:04 ` Niklas Holsti
2016-12-15 21:40 ` Jeffrey R. Carter
2016-12-16 7:41 ` Paul Rubin
2016-12-13 22:50 ` Randy Brukardt
2016-12-14 0:08 ` Jeffrey R. Carter
2016-12-14 1:01 ` Shark8
2016-12-08 8:08 ` Maciej Sobczak
2016-12-08 8:38 ` Dmitry A. Kazakov
2016-12-08 10:25 ` Paul Rubin
2016-12-08 13:39 ` Maciej Sobczak
2016-12-09 1:30 ` Paul Rubin
2016-12-09 8:31 ` J-P. Rosen
2016-12-09 8:58 ` Paul Rubin
2016-12-09 9:18 ` J-P. Rosen
2016-12-09 9:27 ` Paul Rubin
2016-12-09 10:49 ` J-P. Rosen
2016-12-09 19:58 ` Jeffrey R. Carter
2016-12-09 8:35 ` G.B.
2016-12-09 8:57 ` Paul Rubin
2016-12-09 22:15 ` Randy Brukardt
2016-12-09 21:58 ` Randy Brukardt
2016-12-08 8:23 ` Maciej Sobczak
2016-12-08 18:54 ` Adam Jensen
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox