comp.lang.ada
 help / color / mirror / Atom feed
From: Ole-Hjalmar Kristensen <ole-hjalmar.kristensen@substitute_employer_here.com>
Subject: Re: Ada Shootout program for K-Nucleotide (patches)
Date: 02 Sep 2009 13:07:02 +0200
Date: 2009-09-02T13:07:02+02:00	[thread overview]
Message-ID: <wvbrtyzlbo6h.fsf@sun.com> (raw)
In-Reply-To: 4a9e3051$0$30220$9b4e6d93@newsspool1.arcor-online.net

>>>>> "GB" == Georg Bauhaus <rm.tsoh.plus-bug.bauhaus@maps.futureapps.de> writes:

    GB> Ole-Hjalmar Kristensen wrote:
    >>>>>>> "GB" == Georg Bauhaus <rm.dash-bauhaus@futureapps.de> writes:
    >> 
    >> I think the problem is not the explicit copy which happens when we hit
    >> the end of the buffer (easily verified, just increase the buffer size
    >> 10 times, the copying will happen 1/10 of the time, but execution time
    >> stays the same), but the implicit copy which seems to happen in the statement
    >> return In_Buf(Start..I-1); I do not know if this copy is unavoidable,
    >> or if the compiler could have optimized it away.

    GB> It looks like copying In_Buf(Start..I-1) be circumvented.
    GB> I have added a solution to Line_IO.

    GB> read() performance vs. Stream_IO.Read performance seems
    GB> to depend on the OS.  On a Mac here, read() is faster.
    GB> On Ubuntu, Stream_IO.Read is faster.

Strange. I cannot really imagine how Stream_IO.Read is faster since it has to
do the system call to do the actual read anyway. One possibility is
that In_Buf is not properly aligned, so that read() into In_Buf is
slower than the equivalent read() into the C stdio buffers. The system
call should be the same in any case. 

    GB> There is an issue with GNATs and End_File (GNATs other
    GB> than I guess the one you have). When comparing N <= 0,
    GB> ``operator for type "System.Crtl.size_t" is not
    GB> directly visible''.  To work around this, I wrote

    GB>    function End_File return Boolean is
    GB>       type Size_T is mod 2**Standard'Address_Size;
    GB>       N0 : constant Size_T := Size_T(N);
    GB>       Zero : constant Size_T := 0;
    GB>    begin
    GB>       return N0 <= Zero;
    GB>    end End_File;

Yes. I was using an old version of GNAT.

    GB> Finally, I think Get_Line_Test can be made more portable among Unix
    GB> compilers by changing GNAT specific Interfaces.C_Streams
    GB> into Interfaces.C; Could be slightly less convenient to
    GB> write, though?

I only included Interfaces.C_Streams because it was a convenient place
to get hold of the types needed to import the read() function, so if
you find them in Interfaces.C, that's just fine.

-- 
   C++: The power, elegance and simplicity of a hand grenade.



  reply	other threads:[~2009-09-02 11:07 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
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 [this message]
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