comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Ann: Natools.Chunked_Strings, beta 1
Date: Thu, 1 Dec 2011 09:30:37 +0100
Date: 2011-12-01T09:30:37+01:00	[thread overview]
Message-ID: <de6vkicxgv4x$.1c89iragml7xf$.dlg@40tude.net> (raw)
In-Reply-To: jb6gn0$47g$1@munin.nbi.dk

On Wed, 30 Nov 2011 18:11:10 -0600, Randy Brukardt wrote:

> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message 
> news:ouubrb3trn06$.1jl5q3ausoy2v.dlg@40tude.net...
>> On Wed, 30 Nov 2011 11:39:30 +0100, Yannick Duch魥 (Hibou57) wrote:
>>
>>> By the way, I feel the original message is based on erroneous assumptions
>>> about implementations of Ada.Strings.Unbounded. Nothing in the RM 
>>> requires
>>> an implementations to use a single array for unbounded strings, and on 
>>> the
>>> opposite, it says `type Unbounded_String is private;`.
>>
>> I false assumption is IMO that strings are large and need to be 
>> manipulated
>> as a whole, e.g. pieces substituted etc.
>>
>> In each such case the user should consider:
>>
>> 1. maybe the pattern he uses is wrong (e.g. poor parsing techniques
>> splitting and merging strings physically)
>>
>> 2. maybe string is an inappropriate data structure and something like text
>> buffer should be used instead.
>>
>> It is C where everything is char*, not Ada.
> 
> I don't agree, for a number of reasons:
> 
> (1) The Trash-Finder spam filter uses an "append-all" pattern to handling 
> text and html filtering (along with a few replacements). That's mainly 
> because it is best to ignore line-breaks in such matching. I could have 
> invented a different data-structure for that use, but it would have just 
> meant more work (especially to recreate the string pattern-matching 
> operations, which are used extensively).

See, the pattern matcher should have the "line end" atom. My pattern
matcher has it.

> (2) I worried about the performance of this code, especially in the 
> "service" version of TF -- but there is no evidence that using unbounded 
> strings and all of that unstructured heap makes any real difference at all, 
> even when TF runs for months between restarts.

This is very likely. But my concern was not performance, rather the idea of
having long strings. Since long text strings do not exist in "nature"
(:-)), nobody should like to have them.

> To reiterate, premature optimization is the root of all (well, really most) 
> evil.

Yes

> That includes making generalizations about the use of data structures! 
> Spending a lot of time writing some other data structure when a predefined 
> one will do is just plain silly.

No. Using unspecialized data structures for special purposes is not a mean
to prevent premature optimization, it is dirty, in some sense weakly typed,
design. A more careful design would possibly bring a better performance,
but that is not the primary concern.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2011-12-01  8:31 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-29 15:16 Ann: Natools.Chunked_Strings, beta 1 Natasha Kerensikova
2011-11-29 15:37 ` Pascal Obry
2011-11-29 16:34   ` Natasha Kerensikova
2011-11-29 17:08     ` Georg Bauhaus
2011-11-30  9:51       ` Natasha Kerensikova
2011-11-29 20:25     ` Randy Brukardt
2011-11-30 10:44     ` Yannick Duchêne (Hibou57)
2011-11-30 10:39   ` Yannick Duchêne (Hibou57)
2011-11-30 10:57     ` Dmitry A. Kazakov
2011-12-01  0:11       ` Randy Brukardt
2011-12-01  8:30         ` Dmitry A. Kazakov [this message]
2011-12-01 23:26           ` Vinzent Hoefler
2011-12-02  8:27             ` Dmitry A. Kazakov
2011-12-02  9:30               ` Georg Bauhaus
2011-12-02 13:11                 ` Dmitry A. Kazakov
2011-12-02  0:39           ` Randy Brukardt
2011-12-01  9:02         ` Yannick Duchêne (Hibou57)
2011-11-30 13:08     ` Natasha Kerensikova
2011-11-30 19:39       ` Jeffrey Carter
2011-12-01 10:57         ` Natasha Kerensikova
2011-12-01 19:07           ` Jeffrey Carter
2011-12-01 21:19             ` Yannick Duchêne (Hibou57)
2011-12-01 22:49               ` Natasha Kerensikova
2011-12-02 16:16         ` Tero Koskinen
2011-12-02 17:36           ` Adam Beneschan
2011-12-02 18:52             ` Tero Koskinen
2011-12-02 18:14           ` Yannick Duchêne (Hibou57)
2011-12-02 19:07             ` Adam Beneschan
2011-11-30 10:33 ` Yannick Duchêne (Hibou57)
2011-11-30 11:04   ` Natasha Kerensikova
replies disabled

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