comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: functions, packages & characters
Date: Mon, 25 Feb 2002 13:37:51 -0600
Date: 2002-02-25T13:37:51-06:00	[thread overview]
Message-ID: <u7l4ih2guo0gf6@corp.supernews.com> (raw)
In-Reply-To: a55iip$4s7$1@nh.pace.co.uk

Marin David Condic wrote in message ...
>I'm curious about why you think this would be slow? (I may have to
build a
>small chunk of code and time it! :-) In most applications I can think
of,
>you can usually set some kind of arbitrary max sized buffer (the size
of
>"Line" below...) that is going to accommodate most lines in your
average
>text file. (Usually, you have some notion of the kinds of text files
you
>want to process, right?) The presumption is that you might infrequently
have
>to go 'round the loop a second (or third or fourth) time to glom onto
the
>rest of the line, so for 99% (or some high percentage of the time)
you're
>just doing a single Get_Line (is that inefficient?) and a single Append
to
>an unbounded string (again, is that necessarily inefficient?)

I thought I said that if you make the buffer large enough, it wouldn't
be so slow -- but it also would require a large buffer for many
applications (if it didn't, there would be little reason to use
unbounded strings in the first place).

>I've never looked into the underlying implementation of
Unbounded_String in
>any Ada compiler, so I have no clue as to how naturally (in)efficient
they
>may be. I'm guessing a typical implementation is going to be some
collection
>of memory blocks strung together with pointers and some counters. Would
>"Append" require some huge overhead?


I can only comment on the Janus/Ada one (which may not be
representative). It just allocates a string of the correct length for
every operation. That is the easiest implementation (and the one that
GNAT 3.14 uses), but it uses the heap a lot. Improving the performance
of this library has not been a priority, as there isn't any point in
trying to "optimize" it unless you have some real applications using it
that are too slow. Otherwise, you run the risk of making the "average"
application slower.

In any case, Ada.Strings.Unbounded is inappropriate for long-running
applications (such as the AdaIC web server), because continued use of
the heap will eventually lead to fragmentation and memory exhaustion
(and decreasing performance in a virtual memory environment).

                Randy.






  parent reply	other threads:[~2002-02-25 19:37 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-02-21  8:59 functions, packages & characters Christoph Grein
2002-02-21 18:07 ` Unversed Angel
2002-02-21 18:28   ` Hyman Rosen
2002-02-21 23:44     ` Randy Brukardt
2002-02-22  0:37       ` Matthew Heaney
2002-02-22  1:12         ` Matthew Heaney
2002-02-22  2:57         ` Randy Brukardt
2002-02-22 13:54           ` Marin David Condic
2002-02-23  1:10             ` Matthew Heaney
2002-02-25 15:47               ` Marin David Condic
2002-02-26 15:58                 ` Matthew Heaney
2002-02-25 19:37             ` Randy Brukardt [this message]
2002-02-25 20:49               ` Marin David Condic
2002-02-26  3:30               ` David Starner
2002-02-26 15:44                 ` Hyman Rosen
2002-02-26 21:43                   ` David Starner
2002-02-27  6:32                     ` Hyman Rosen
2002-02-28  3:55                       ` Chad R. Meiners
2002-02-28 18:44                         ` Hyman Rosen
2002-03-02  3:25                           ` Chad R. Meiners
2002-03-03  8:22                             ` Hyman Rosen
2002-03-03 17:50                               ` Chad R. Meiners
2002-03-01  2:08                         ` David Starner
2002-03-05 14:36                       ` Marin David Condic
2002-02-26  7:42               ` tmoran
2002-02-22 15:34           ` Matthew Heaney
2002-02-22  2:47       ` Jeffrey Carter
2002-02-22 13:41       ` Marin David Condic
2002-02-23  1:08         ` Matthew Heaney
2002-02-23  2:03         ` Jeffrey Carter
2002-02-22 16:27       ` Hyman Rosen
2002-02-21 23:49     ` unversedangel
2002-02-21 22:48   ` unversedangel
2002-02-21 23:14     ` Hyman Rosen
2002-02-22 14:11     ` Marin David Condic
  -- strict thread matches above, loose matches on Subject: below --
2002-02-21  0:16 Unversed Angel
2002-02-21  0:37 ` tmoran
2002-02-21  1:13   ` Unversed Angel
2002-02-21  2:53     ` tmoran
2002-02-21  8:25       ` Unversed Angel
2002-02-21 13:47         ` Marin David Condic
2002-02-22  0:22         ` tmoran
replies disabled

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