From: Georg Bauhaus <rm.tsoh.plus-bug.bauhaus@maps.futureapps.de>
Subject: Re: Ada Shootout program for K-Nucleotide (patches)
Date: Sun, 02 Aug 2009 14:55:57 +0200
Date: 2009-08-02T14:56:02+02:00 [thread overview]
Message-ID: <4a758ce2$0$31338$9b4e6d93@newsspool4.arcor-online.net> (raw)
In-Reply-To: <0c18b36c-7af0-454c-8208-9b0416111a1f@w41g2000yqb.googlegroups.com>
Ludovic Brenta wrote:
> Georg Bauhaus wrote on comp.lang.ada:
>> This is about the K-Nucleotide program at the
>> Computer Language Benchmark Game,http://shootout.alioth.debian.org/u32/benchmark.php?test=knucleotide&...
>> where some Ada programs have started to fail.
>>
>> In order to have one of them work again, I have patched
>> knucleotide.gnat, with some success. New version is here:http://home.arcor.de/bauhaus/Ada/knucleotide.gnat
>>
>> Comments? Does it work on your machine?
>>
>> The two changes:
>>
>> 1 - [stack exhaustion] a loop reading input lines into an
>> ubounded string replaces the recursive String "&"ing
>> procedure. (Noting that the input text file is ~240MB ...)
>>
>> 2 - [heavy bounded strings] a lightweight bounded string ADT
>> replaces an instance of Generic_Bounded_Length, yielding
>> an improved running time of ~22s down from ~30s for
>> the 2,500,000 case.
>>
>> Still, on a relatively small virtual machine running 64bit
>> Debian, the program cannot handle the 25,000,000 case.
>
> I note that both Martin and yourself use Ada.Text_IO (especially
> Read_Line) which is notoriously slow. I would use Character'Read and
> a finite state machine to detect the portion of the input file to be
> processed, then to fill in the buffer. That should be faster.
Not sure that Character'Read will really be faster.
The following Getline has left me unconvinced.
I made a simple test just reading big files and
measuring the time; Text_IO.Get_Line wins on Windows
and even more or Debian.
Also, unless there is bug in the program below,
using Streams and then child packages of Text_IO
for output formatting, seems to confuse the
I/O system. (Would we be shooting ourselves in
the foot anyway?)
GNAT.IO is, I think, getting us in trouble; it doesn't
signal End_Error, if I'm not mistaken.
with Ada.Text_IO.Text_Streams;
procedure Getline (Item: in out String; Last : out Natural) is
--
-- Input via Character'Read.
-- Assume Unix or Windows line ending conventions.
--
Stdin: constant Ada.Text_IO.Text_Streams.Stream_Access :=
Ada.Text_IO.Text_Streams.Stream (Ada.Text_IO.Standard_Input);
C : Character;
begin
Last := Item'First - 1;
loop
Character'Read (Stdin, C);
exit when C = ASCII.LF;
if C /= ASCII.CR then
Last := Last + 1;
Item (Last) := C;
end if;
exit when Last = Item'Last;
end loop;
end Getline;
next prev parent reply other threads:[~2009-08-02 12:55 UTC|newest]
Thread overview: 116+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-01 12:21 Ada Shootout program for K-Nucleotide (patches) Georg Bauhaus
2009-08-01 12:59 ` Ludovic Brenta
2009-08-01 13:59 ` Georg Bauhaus
2009-08-01 13:50 ` Gautier write-only
2009-08-01 15:21 ` Ludovic Brenta
2009-08-01 15:37 ` Gautier write-only
2009-08-02 12:55 ` Georg Bauhaus [this message]
2009-08-27 11:17 ` Ole-Hjalmar Kristensen
2009-08-27 12:25 ` Georg Bauhaus
2009-09-01 8:06 ` Ole-Hjalmar Kristensen
2009-09-01 9:29 ` Georg Bauhaus
2009-09-01 10:48 ` Ole-Hjalmar Kristensen
2009-09-01 10:16 ` Ole-Hjalmar Kristensen
2009-09-01 11:34 ` Georg Bauhaus
2009-09-01 12:11 ` Ole-Hjalmar Kristensen
2009-09-01 14:36 ` Georg Bauhaus
2009-09-03 8:49 ` Ole-Hjalmar Kristensen
2009-09-02 8:44 ` Georg Bauhaus
2009-09-02 11:07 ` Ole-Hjalmar Kristensen
2009-09-03 8:13 ` Ole-Hjalmar Kristensen
2009-09-03 10:39 ` Georg Bauhaus
2009-08-03 8:56 ` Jacob Sparre Andersen
2009-08-03 11:43 ` Georg Bauhaus
2009-08-03 12:36 ` Jacob Sparre Andersen
2009-08-03 18:31 ` Isaac Gouy
2009-08-03 20:29 ` Robert A Duff
2009-08-04 15:43 ` Isaac Gouy
2009-08-04 16:06 ` Isaac Gouy
2009-08-04 17:08 ` Georg Bauhaus
2009-08-05 15:58 ` Isaac Gouy
2009-08-05 21:18 ` Georg Bauhaus
2009-08-05 22:04 ` Ludovic Brenta
2009-08-05 22:31 ` Georg Bauhaus
2009-08-05 23:44 ` Jeffrey R. Carter
2009-08-06 8:38 ` Georg Bauhaus
2009-08-06 21:39 ` Georg Bauhaus
2009-08-06 22:42 ` Jeffrey R. Carter
2009-08-07 8:53 ` Georg Bauhaus
2009-08-07 9:21 ` Jacob Sparre Andersen
2009-08-07 9:23 ` Jacob Sparre Andersen
2009-08-09 19:17 ` Georg Bauhaus
2009-08-13 20:56 ` jonathan
2009-08-13 21:30 ` jonathan
2009-08-13 22:08 ` Georg Bauhaus
2009-08-14 15:31 ` jonathan
2009-08-06 7:51 ` Dmitry A. Kazakov
2009-08-06 0:07 ` Isaac Gouy
2009-08-06 8:36 ` Georg Bauhaus
2009-08-06 9:09 ` Dmitry A. Kazakov
2009-08-06 10:34 ` Georg Bauhaus
2009-08-06 10:49 ` Dmitry A. Kazakov
2009-08-06 15:21 ` Isaac Gouy
2009-08-03 20:47 ` Ludovic Brenta
2009-08-01 17:07 ` jonathan
2009-08-01 17:59 ` jonathan
2009-08-02 11:39 ` Georg Bauhaus
2009-08-02 16:00 ` jonathan
2009-08-02 16:42 ` jonathan
2009-09-03 13:44 ` Olivier Scalbert
2009-09-03 14:08 ` Ludovic Brenta
2009-09-03 15:13 ` Olivier Scalbert
2009-09-03 19:11 ` sjw
2009-09-04 6:11 ` Olivier Scalbert
2009-09-04 8:18 ` Ludovic Brenta
2009-09-04 10:17 ` Olivier Scalbert
2009-09-04 12:37 ` Ludovic Brenta
2009-09-04 13:50 ` Olivier Scalbert
2009-09-04 12:50 ` Ludovic Brenta
2009-09-04 16:22 ` Georg Bauhaus
2009-09-04 16:29 ` Georg Bauhaus
2009-09-04 16:38 ` Ludovic Brenta
2009-09-04 17:58 ` Georg Bauhaus
2009-09-04 18:12 ` Georg Bauhaus
2009-09-05 20:16 ` Georg Bauhaus
2009-09-07 7:45 ` Olivier Scalbert
2009-09-07 9:19 ` Georg Bauhaus
2009-09-07 13:31 ` Olivier Scalbert
2009-09-07 14:38 ` jonathan
2009-09-07 15:03 ` Olivier Scalbert
2009-09-07 17:31 ` jonathan
2009-09-07 17:54 ` Olivier Scalbert
2009-09-07 18:07 ` Georg Bauhaus
2009-09-08 0:22 ` Georg Bauhaus
2009-09-04 17:56 ` Martin
2009-09-04 18:26 ` Georg Bauhaus
2009-09-04 21:51 ` Robert A Duff
2009-09-04 18:51 ` Ludovic Brenta
2009-09-04 9:27 ` Georg Bauhaus
2009-09-03 15:28 ` Georg Bauhaus
2009-09-04 1:24 ` Georg Bauhaus
2009-08-04 8:23 ` Martin
2009-08-16 15:20 ` jonathan
2009-08-17 15:46 ` Georg Bauhaus
2009-08-18 16:59 ` jonathan
2009-08-19 14:52 ` Georg Bauhaus
2009-08-19 16:40 ` Martin
2009-08-19 18:24 ` Robert A Duff
2009-08-19 22:15 ` jonathan
2009-08-19 23:50 ` Georg Bauhaus
2009-08-20 19:47 ` jonathan
2009-08-20 22:15 ` Georg Bauhaus
2009-08-21 21:43 ` jonathan
2009-08-22 22:35 ` Georg Bauhaus
2009-08-23 22:21 ` jonathan
2009-08-20 19:55 ` jonathan
2009-08-19 21:37 ` Georg Bauhaus
2009-08-19 19:22 ` jonathan
2009-08-19 19:27 ` jonathan
2009-08-27 9:05 ` Martin
2009-08-27 9:08 ` Martin
2009-08-27 10:01 ` Georg Bauhaus
2009-10-07 11:44 ` Olivier Scalbert
2009-10-07 12:04 ` Georg Bauhaus
2009-10-07 13:22 ` Martin
2009-10-07 14:15 ` Olivier Scalbert
2009-10-08 9:54 ` Georg Bauhaus
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox