Jump to page: 1 2
Thread overview
Strange measurements when reproducing issue 5650
Apr 25, 2012
SomeDude
Apr 25, 2012
SomeDude
Apr 25, 2012
Martin Drašar
Apr 25, 2012
SomeDude
Apr 25, 2012
SomeDude
Apr 27, 2012
David Brown
Apr 27, 2012
Marco Leise
Apr 25, 2012
Jordi Sayol
Apr 25, 2012
Don Clugston
Apr 25, 2012
Marco Leise
Apr 25, 2012
H. S. Teoh
Apr 27, 2012
SomeDude
Apr 27, 2012
SomeDude
April 25, 2012
Discussion here: http://d.puremagic.com/issues/show_bug.cgi?id=5650

On my Windows box, the following program

import std.stdio, std.container, std.range;

void main() {
    enum int range = 100;
    enum int n = 1_000_000;

    auto t = redBlackTree!int(0);

    for (int i = 0; i < n; i++) {
        if (i > range)
            t.removeFront();
        t.insert(i);
    }

    writeln(walkLength(t[]));
    //writeln(t[]);
}

runs in about 1793 ms.
The strange thing is, if I comment out the writeln line, runtimes are in average *slower* by about 20 ms, with timings varying a little bit more than when the writeln is included.

How can this be ?
April 25, 2012
On Wednesday, 25 April 2012 at 08:34:40 UTC, SomeDude wrote:

Noone reproduces this ?
April 25, 2012
Dne 25.4.2012 13:27, SomeDude napsal(a):
> On Wednesday, 25 April 2012 at 08:34:40 UTC, SomeDude wrote:
>
> Noone reproduces this ?

Linux uriel 2.6.32-5-amd64 #1 SMP Wed Jan 12 03:40:32 UTC 2011 x86_64 GNU/Linux
DMD64 D Compiler v2.058

Commented writeln on average (10 runs) 40 ms slower.

So yes, it happens to me as well.

Martin
April 25, 2012
On 25/04/12 10:34, SomeDude wrote:
> Discussion here: http://d.puremagic.com/issues/show_bug.cgi?id=5650
>
> On my Windows box, the following program
>
> import std.stdio, std.container, std.range;
>
> void main() {
> enum int range = 100;
> enum int n = 1_000_000;
>
> auto t = redBlackTree!int(0);
>
> for (int i = 0; i < n; i++) {
> if (i > range)
> t.removeFront();
> t.insert(i);
> }
>
> writeln(walkLength(t[]));
> //writeln(t[]);
> }
>
> runs in about 1793 ms.
> The strange thing is, if I comment out the writeln line, runtimes are in
> average *slower* by about 20 ms, with timings varying a little bit more
> than when the writeln is included.
>
> How can this be ?

Very strange.
Maybe there is some std library cleanup which is slower if nothing got written?
April 25, 2012
On Wed, 25 Apr 2012 07:27:29 -0400, SomeDude <lovelydear@mailmetrash.com> wrote:

> On Wednesday, 25 April 2012 at 08:34:40 UTC, SomeDude wrote:
>
> Noone reproduces this ?

On my linux box, it runs in about 580ms, with or without the writeln.

This is what I would expect.

But things can be strange when dealing with GC timings.  Have you tried profiling the code to see where the time is being added?

-Steve
April 25, 2012
Am Wed, 25 Apr 2012 10:34:38 +0200
schrieb "SomeDude" <lovelydear@mailmetrash.com>:

> Discussion here: http://d.puremagic.com/issues/show_bug.cgi?id=5650
> 
> On my Windows box, the following program
> 
> import std.stdio, std.container, std.range;
> 
> void main() {
>      enum int range = 100;
>      enum int n = 1_000_000;
> 
>      auto t = redBlackTree!int(0);
> 
>      for (int i = 0; i < n; i++) {
>          if (i > range)
>              t.removeFront();
>          t.insert(i);
>      }
> 
>      writeln(walkLength(t[]));
>      //writeln(t[]);
> }
> 
> runs in about 1793 ms.
> The strange thing is, if I comment out the writeln line, runtimes
> are in average *slower* by about 20 ms, with timings varying a
> little bit more than when the writeln is included.
> 
> How can this be ?

GDC (using DMD 2.057) Linux 64-bit, Core 2 Duo @ 2 Ghz
----------------+-------------------
without writeln |       with writeln
        3.150 s | 3.146 s .. 3,195 s

Besides the fact that my rig seems to be a bit dated, I can't reproduce what you see. Only that the writeln makes the timing less accurate.

-- 
Marco

April 25, 2012
On Wednesday, 25 April 2012 at 15:35:44 UTC, Steven Schveighoffer wrote:
> On Wed, 25 Apr 2012 07:27:29 -0400, SomeDude <lovelydear@mailmetrash.com> wrote:
>
>> On Wednesday, 25 April 2012 at 08:34:40 UTC, SomeDude wrote:
>>
>> Noone reproduces this ?
>
> On my linux box, it runs in about 580ms, with or without the writeln.
>
> This is what I would expect.
>
> But things can be strange when dealing with GC timings.  Have you tried profiling the code to see where the time is being added?
>
> -Steve

Did you compile with  dmd -O -inline -release ?

I'll do some profiling later.
April 25, 2012
On Wednesday, 25 April 2012 at 17:06:00 UTC, SomeDude wrote:
> On Wednesday, 25 April 2012 at 15:35:44 UTC, Steven Schveighoffer wrote:
>> On Wed, 25 Apr 2012 07:27:29 -0400, SomeDude <lovelydear@mailmetrash.com> wrote:
>>
>>> On Wednesday, 25 April 2012 at 08:34:40 UTC, SomeDude wrote:
>>>
>>> Noone reproduces this ?
>>
>> On my linux box, it runs in about 580ms, with or without the writeln.
>>
>> This is what I would expect.
>>
>> But things can be strange when dealing with GC timings.  Have you tried profiling the code to see where the time is being added?
>>
>> -Steve
>
> Did you compile with  dmd -O -inline -release ?
>
> I'll do some profiling later.

OK, I'm having a hard time producing data that support what I see without profiling on, but it's still quite consistent accross runs. I dunno what's wrong here.

April 25, 2012
On Wed, 25 Apr 2012 13:05:59 -0400, SomeDude <lovelydear@mailmetrash.com> wrote:

> On Wednesday, 25 April 2012 at 15:35:44 UTC, Steven Schveighoffer wrote:
>> On Wed, 25 Apr 2012 07:27:29 -0400, SomeDude <lovelydear@mailmetrash.com> wrote:
>>
>>> On Wednesday, 25 April 2012 at 08:34:40 UTC, SomeDude wrote:
>>>
>>> Noone reproduces this ?
>>
>> On my linux box, it runs in about 580ms, with or without the writeln.
>>
>> This is what I would expect.
>>
>> But things can be strange when dealing with GC timings.  Have you tried profiling the code to see where the time is being added?
>>
>> -Steve
>
> Did you compile with  dmd -O -inline -release ?

Yes.

-Steve
April 25, 2012
Al 25/04/12 13:27, En/na SomeDude ha escrit:
> On Wednesday, 25 April 2012 at 08:34:40 UTC, SomeDude wrote:
> 
> Noone reproduces this ?
> 

My results in Linux:

32-bit executable: About 574ms, with or without writeln.

64-bit executable: About 798ms, with or without writeln.

-- 
Jordi Sayol
« First   ‹ Prev
1 2