comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: This can't be done in Ada...or?
Date: 15 Feb 2005 08:41:26 -0500
Date: 2005-02-15T08:41:26-05:00	[thread overview]
Message-ID: <wccpsz2djp5.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: rlszmy66vfg.fsf@jacob.crs4.it

Jacob Sparre Andersen <sparre@nbi.dk> writes:

> Mark Lorenzen wrote:
> > "Per Lindquist" <commander@death-star.com> writes:
> 
> > > One of our target environments is a time-critical real-time
> > > system. We are worried about the execution overhead implied by a
> > > package instantiation (or any 'new' statement) in every subprogram
> > > in the system.
> > > 
> > > Will your solution cause overhead for each subprogram call?

Probably.

> > A compile-time instantiation of a package has nothing to do with
> > run-time efficiency. You can also define a new type in a subprogram,
> > which doesn't affect run-time efficiency either.
> 
> Aren't the compilers (theoretically) allowed to delay the
> instantiation of the packgage until run-time?

No, instantiation is a compile-time concept.  I'm not sure what
it would mean to delay it until run time.

The issue here is the cost of running the elaboration code of the
instance.  Theoretically, the compiler could optimize it away in this
case, but I don't think any Ada compilers are that smart.  The only
way to know for sure is to try it.

This Reflection package has a bunch of string manipulation code,
and if you instantiate it in a procedure, it will happen
every time that procedure is called (unless the compiler
is smarter than I think it is).  This could indeed be very
costly.

- Bob



  parent reply	other threads:[~2005-02-15 13:41 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-02-11 16:33 This can't be done in Ada...or? Per Lindquist
2005-02-11 16:51 ` Duncan Sands
2005-02-12 19:55   ` Florian Weimer
2005-02-14  8:34     ` Per Lindquist
2005-02-14  8:17   ` Per Lindquist
2005-02-11 17:02 ` Jeff C
2005-02-11 18:27   ` Robert A Duff
2005-02-11 23:51     ` Ludovic Brenta
2005-02-11 23:52       ` Robert A Duff
2005-02-12 13:55     ` Duncan Sands
2005-02-12 14:58       ` Martin Krischik
2005-02-12 15:56         ` Martin Dowie
2005-02-12 19:02       ` Robert A Duff
2005-02-14  8:49     ` Per Lindquist
2005-02-11 17:08 ` Jerome Hugues
2005-02-14  9:05   ` Per Lindquist
2005-02-14 13:07     ` Georg Bauhaus
2005-02-12  1:10 ` Jeffrey Carter
2005-02-12 14:01   ` Duncan Sands
2005-02-13  0:27     ` Jeffrey Carter
2005-02-14  9:10       ` Per Lindquist
2005-02-15  0:40         ` Jeffrey Carter
2005-02-15  7:40           ` Per Lindquist
2005-02-15  8:39             ` OT: Google reply (Was: Re: This can't be done in Ada...or?) Adrien Plisson
2005-02-15  9:42               ` Per Lindquist
2005-02-15  8:27           ` This can't be done in Ada...or? Per Lindquist
2005-02-14 22:10             ` Manuel G. R.
2005-02-15  8:47             ` Mark Lorenzen
2005-02-15  9:09               ` Jacob Sparre Andersen
2005-02-15  9:31                 ` Mark Lorenzen
2005-02-15  9:48                   ` Jacob Sparre Andersen
2005-02-15 10:07                     ` Mark Lorenzen
2005-02-15 10:15                   ` Martin Dowie
2005-02-17 22:09                     ` Randy Brukardt
2005-02-18  6:53                       ` Martin Dowie
2005-02-15 13:46                   ` Robert A Duff
2005-02-15 13:41                 ` Robert A Duff [this message]
2005-02-15 16:30                   ` Per Lindquist
2005-02-15 19:38                     ` Martin Dowie
2005-02-15 20:20                     ` Robert A Duff
2005-02-17 21:52                   ` Simon Wright
2005-02-17 22:06               ` Randy Brukardt
2005-02-17 22:40                 ` Mark Lorenzen
2005-02-16  0:04             ` Jeffrey Carter
2005-02-16  0:09             ` Jeffrey Carter
2005-02-17  9:47               ` Per Lindquist
2005-02-17 22:36               ` Randy Brukardt
2005-02-14 15:21 ` Peter Amey
replies disabled

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