comp.lang.ada
 help / color / mirror / Atom feed
From: mheaney@on2.com (Matthew Heaney)
Subject: Re: Ada 200X
Date: 13 Jun 2003 07:00:39 -0700
Date: 2003-06-13T14:00:39+00:00	[thread overview]
Message-ID: <1ec946d1.0306130600.48c289f3@posting.google.com> (raw)
In-Reply-To: jvf4evgqd71kuqeoc2c2c81mdcck01g8qa@4ax.com

Craig Carey <research@ijs.co.nz> wrote in message news:<jvf4evgqd71kuqeoc2c2c81mdcck01g8qa@4ax.com>...
> 
> Some sample techniques for speeding up some Ada 95 programs:

At least in Charles, you can optimize string and vector container
manipulation by calling Resize, which preallocates the internal
buffer.  This is useful if you know the ultimate size of the
collection apriori:

procedure Op (S : in out String_Container_Subtype) is
begin
   Resize (S, Size => 80); //for example

   Append (S, "first");
   Append (S, "second");
   ...
end Op;

Both the string and vector containers have a To_Access function, which
returns a pointer to the internal buffer.  This allows you to
eliminate copying.  For example, instead of this:

procedure Op (S : in String_Container_Subtype) is
begin
   Put_Line (To_String (S)); -- not as efficient as below
end;

do this instead, if you're really concerned about efficiency:

procedure Op (S : in String_Container_Subtype) is
   Line : String renames To_Access (S) (1 .. Length (S));
begin
   Put_Line (Line);
end;

The string container package guarantees that To_Access always returns
a non-null access object.

The combination of Resize and To_Access should improve efficiency.



  parent reply	other threads:[~2003-06-13 14:00 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-06-01 21:36 Ada 200X And838N
2003-06-02  2:22 ` Bobby D. Bryant
2003-06-02  4:20 ` Robert I. Eachus
2003-06-02 11:22   ` Larry Kilgallen
2003-06-02 14:09     ` Hyman Rosen
2003-06-02 14:23       ` Vinzent Hoefler
2003-06-02 14:59         ` Hyman Rosen
2003-06-02 15:04           ` Vinzent Hoefler
2003-06-02 15:18             ` Bill Findlay
2003-06-02 15:32               ` Larry Kilgallen
2003-06-02 15:41               ` Vinzent Hoefler
2003-06-02 15:07           ` Larry Kilgallen
2003-06-02 15:04         ` Larry Kilgallen
2003-06-02 14:23     ` Robert I. Eachus
2003-06-02 14:31       ` Vinzent Hoefler
2003-06-02 15:05         ` Larry Kilgallen
2003-06-02 15:06         ` Hyman Rosen
2003-06-02 21:05         ` Robert I. Eachus
2003-06-02 22:59           ` Larry Kilgallen
2003-06-03  4:07             ` Robert I. Eachus
2003-06-03  7:52           ` Jean-Pierre Rosen
2003-06-03  9:09           ` Vinzent Hoefler
2003-06-03 14:54             ` Robert I. Eachus
2003-06-04  7:38               ` Vinzent Hoefler
2003-06-05  7:20                 ` Robert I. Eachus
2003-06-02  5:36 ` Wesley Groleau
2003-06-02  8:02 ` Preben Randhol
2003-06-02 10:50 ` Georg Bauhaus
2003-06-03  2:29 ` Steve
2003-06-03  2:45 ` Gautier Write-only
2003-06-03  8:38   ` Vinzent Hoefler
2003-06-03 11:48   ` Preben Randhol
2003-06-03 12:14     ` Lutz Donnerhacke
2003-06-03 12:35       ` Preben Randhol
2003-06-07 21:16       ` Craig Carey
2003-06-08 11:14         ` Martin Dowie
2003-06-09 14:07           ` Craig Carey
2003-06-13 14:20             ` Matthew Heaney
2003-06-13 14:00         ` Matthew Heaney [this message]
2003-06-03 17:24     ` Robert A Duff
2003-06-03 17:45       ` Preben Randhol
2003-06-03 17:48         ` Preben Randhol
2003-06-03 18:05           ` Vinzent Hoefler
2003-06-04 10:36             ` Preben Randhol
  -- strict thread matches above, loose matches on Subject: below --
2004-10-31  1:51 David Botton
2004-10-31  7:33 ` Martin Dowie
2004-10-31 18:59   ` Jeffrey Carter
2002-12-26 16:17 Ada 200x Adrian Hoe
2002-12-27 19:32 ` Randy Brukardt
2002-12-27 20:55   ` Robert A Duff
replies disabled

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