comp.lang.ada
 help / color / mirror / Atom feed
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.



  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