From: Georg Bauhaus <rm.dash-bauhaus@futureapps.de>
Subject: Re: Ann: Natools.Chunked_Strings, beta 1
Date: Tue, 29 Nov 2011 18:08:46 +0100
Date: 2011-11-29T18:08:46+01:00 [thread overview]
Message-ID: <4ed5119e$0$7619$9b4e6d93@newsspool1.arcor-online.net> (raw)
In-Reply-To: <slrnjda2cc.1lme.lithiumcat@sigil.instinctive.eu>
On 29.11.11 17:34, Natasha Kerensikova wrote:
> Hello,
>
> On 2011-11-29, Pascal Obry <pascal@obry.net> wrote:
>> Do you have some speed/memory comparison between your Chunked_String and
>> GNAT Unbounded_String?
>
> Not yet, but I would love to eventually have it. I'm mostly missing a
> proper benchmark protocol, and any input on that point would be
> appreciated.
The package GNAT.Spitbol.Patterns uses Unbounded_String extensively.
Last time I checked it seemed possible to replace the dependence
on Ada.Strings.Unbounded with one on a compatible package.
The very first definition in GNAT.Spitbol is
subtype VString is Ada.Strings.Unbounded.Unbounded_String;
It should be sufficient to change this definition and
Nul : VString renames Ada.Strings.Unbounded.Null_Unbounded_String;
to use your strings, in local copies of the sources of the
GNAT.Spitbol hierarchy.
Of particular interest might be, I think, anything that can improve
replacement in objects of type Unbounded_String.
One program whose performance depends a lot on replacement
in Unbounded_String is
http://shootout.alioth.debian.org/u32q/program.php?test=regexdna&lang=gnat&id=1
The bencher software they use to measure relative performance of the
programs is fairly easy to install on GNU/Linux. The "read-only"
part of the above program is really fast, the replacements, however,
aren't. The critical part is in the function Match:
-- Perform the regex substitution. Likely facing
--
-- (1a) the GREAT BIG subtstitution problem
-- (cf. D.W.E. Blatt, 1980)
-- (1b) replacements in Unbounded_String which
-- the pattern matching implementation is using
while I <= Limit loop
for C in Codes_Index loop
while
Match(Subject => Sequence_Lines(I),
Pat => Codes(C).Code,
Replace => Codes(C).Alternatives)
loop
null;
end loop;
end loop;
I := I + Step;
end loop;
Maybe you find some idea in there to be useful for testing.
next prev parent reply other threads:[~2011-11-29 17:08 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 [this message]
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
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