Welcome to Web-News
A Web-based News Reader
Subject Re: DMD 1.034 and 2.018 releases
From bearophile <bearophileHUGS@lycos.com>
Date Sat, 09 Aug 2008 08:26:18 -0400
Newsgroups digitalmars.D.announce

First benchmark, just D against itself, not used GCC yet, the results show that vector ops are generally slower, but maybe there's some bug/problem in my benchmark (note it needs just Phobos!), not tested on Linux yet:


import std.stdio: put = writef, putr = writefln;
import std.conv: toInt;

version (Win32) {
    import std.c.windows.windows: QueryPerformanceCounter, QueryPerformanceFrequency;

    double clock() {
        long t;
        QueryPerformanceCounter(&t);

        return cast(double)t / queryPerformanceFrequency;
    }

    long queryPerformanceFrequency;

    static this() {
        QueryPerformanceFrequency(&queryPerformanceFrequency);
    }
}

version (linux) {
    import std.c.linux.linux: time;

    double clock() {
        return cast(double)time(null);
    }
}


void main(string[] args) {
    int n = args.length >= 2 ? toInt(args[1]) : 10;
    n *= 8; // to avoid problems with SSE2
    int nloops = args.length >= 3 ? toInt(args[2]) : 1;
    bool use_vec = args.length == 4 ? cast(bool)toInt(args[3]) : true;

    putr("array len= ", n, "  nloops= ", nloops, "  Use vec ops: ", use_vec);

    auto a1 = new int[n]; // void?
    auto a2 = new int[n]; // void?
    auto a3 = new int[n];

    foreach (i, ref el; a1)
        el = i * 7 + 1;
    foreach (i, ref el; a2)
        el = i + 1;

    auto t = clock();
    if (use_vec)
        for (int j = 0; j < nloops; j++)
            a3[] = a1[] / a2[];
    else
        for (int j = 0; j < nloops; j++)
            for (int i; i < a3.length; i++)
                a3[i] = a1[i] / a2[i];
    putr("time= ", clock() - t, " s");

    if (a3.length < 300)
        putr("\nResult:\n", a3);
}

/*
D code with /:
    C:\>array_benchmark.exe 10000 10000 0
    array len= 80000  nloops= 10000  Use vec ops: false
    time= 7.10563 s

    C:\>array_benchmark.exe 10000 10000 1
    array len= 80000  nloops= 10000  Use vec ops: true
    time= 7.222 s


    C:\>array_benchmark.exe 12000000 1 0
    array len= 96000000  nloops= 1  Use vec ops: false
    time= 0.654696 s

    C:\>array_benchmark.exe 12000000 1 1
    array len= 96000000  nloops= 1  Use vec ops: true
    time= 0.655401 s


D code with *:
    C:\>array_benchmark.exe 10000 10000 0
    array len= 80000  nloops= 10000  Use vec ops: false
    time= 7.10615 s

    C:\>array_benchmark.exe 10000 10000 1
    array len= 80000  nloops= 10000  Use vec ops: true
    time= 7.21904 s


    C:\>array_benchmark.exe 12000000 1 0
    array len= 96000000  nloops= 1  Use vec ops: false
    time= 0.65515 s

    C:\>array_benchmark.exe 12000000 1 1
    array len= 96000000  nloops= 1  Use vec ops: true
    time= 0.65566 s
    (Note that 0.65566 > 0.65515 isn't due to noise)


D code with +:
    C:\>array_benchmark.exe 10000 10000 0
    array len= 80000  nloops= 10000  Use vec ops: false
    time= 7.10848 s

    C:\>array_benchmark.exe 10000 10000 1
    array len= 80000  nloops= 10000  Use vec ops: true
    time= 7.22527 s


    C:\>array_benchmark.exe 12000000 1 0
    array len= 96000000  nloops= 1  Use vec ops: false
    time= 0.654797 s

    C:\>array_benchmark.exe 12000000 1 1
    array len= 96000000  nloops= 1  Use vec ops: true
    time= 0.654991 s

*/


Bye,
bearophile

Recent messages in this thread
 
-# DMD 1.034 and 2.018 releases Walter Bright 08-Aug-2008 04:24 pm
.-# Re: DMD 1.034 and 2.018 releases Lars Ivar Igesund 08-Aug-2008 04:38 pm
.||# Re: DMD 1.034 and 2.018 releases Walter Bright 08-Aug-2008 05:41 pm
.|-# Re: DMD 1.034 and 2.018 releases Jarrett Billingsley 09-Aug-2008 12:36 am
.|.-# Re: DMD 1.034 and 2.018 releases Lars Ivar Igesund 09-Aug-2008 05:45 am
.|..-# Re: DMD 1.034 and 2.018 releases Walter Bright 09-Aug-2008 02:18 pm
.|...|# Re: DMD 1.034 and 2.018 releases Lars Ivar Igesund 09-Aug-2008 03:21 pm
.|...\# Re: DMD 1.034 and 2.018 releases Sean Kelly 09-Aug-2008 03:41 pm
.-# Re: DMD 1.034 and 2.018 releases dsimcha 08-Aug-2008 04:50 pm
.|\# Re: DMD 1.034 and 2.018 releases Walter Bright 08-Aug-2008 05:42 pm
.|# Re: DMD 1.034 and 2.018 releases Sean Kelly 08-Aug-2008 05:57 pm
.|# Re: DMD 1.034 and 2.018 releases Jonathan Crapuche... 08-Aug-2008 06:17 pm
.-# Re: DMD 1.034 and 2.018 releases Bill Baxter 08-Aug-2008 06:28 pm
.|-# Re: DMD 1.034 and 2.018 releases Walter Bright 08-Aug-2008 06:30 pm
.|.\# Re: DMD 1.034 and 2.018 releases Bill Baxter 09-Aug-2008 01:00 am
.|# Re: DMD 1.034 and 2.018 releases Walter Bright 08-Aug-2008 06:31 pm
.-# Re: DMD 1.034 and 2.018 releases bearophile 08-Aug-2008 08:43 pm
.|-# Re: DMD 1.034 and 2.018 releases bearophile 08-Aug-2008 08:46 pm
.||\# Re: DMD 1.034 and 2.018 releases Walter Bright 09-Aug-2008 01:44 am
.|-# Re: DMD 1.034 and 2.018 releases Walter Bright 09-Aug-2008 01:43 am
.|.|# Re: DMD 1.034 and 2.018 releases Moritz Warning 09-Aug-2008 06:53 am
.|.-# Re: DMD 1.034 and 2.018 releases bearophile 09-Aug-2008 07:45 am
.|..-# Re: DMD 1.034 and 2.018 releases (Current message) bearophile 09-Aug-2008 08:26 am
.|..|-# Re: DMD 1.034 and 2.018 releases bearophile 09-Aug-2008 09:22 am
.|..||\# Re: DMD 1.034 and 2.018 releases bearophile 09-Aug-2008 11:11 am
.|..|-# Re: DMD 1.034 and 2.018 releases dsimcha 09-Aug-2008 10:46 am
.|..|||# Re: DMD 1.034 and 2.018 releases bearophile 09-Aug-2008 11:14 am
.|..||\# Re: DMD 1.034 and 2.018 releases Don 11-Aug-2008 02:57 am
.|..|-# Re: DMD 1.034 and 2.018 releases Walter Bright 09-Aug-2008 02:24 pm
.|..||-# Re: DMD 1.034 and 2.018 releases bearophile 09-Aug-2008 02:45 pm
.|..||.-# Re: DMD 1.034 and 2.018 releases Walter Bright 10-Aug-2008 02:54 am
.|..||..-# Re: DMD 1.034 and 2.018 releases bearophile 10-Aug-2008 07:45 am
.|..||...-# Re: DMD 1.034 and 2.018 releases Walter Bright 10-Aug-2008 01:57 pm
.|..||....-# Re: DMD 1.034 and 2.018 releases Dave 11-Aug-2008 10:03 pm
.|..||.....\# Re: DMD 1.034 and 2.018 releases - Let the games begin! Dave 12-Aug-2008 12:17 am
.|..|\# Re: DMD 1.034 and 2.018 releases Walter Bright 10-Aug-2008 03:26 am
.|..\# Re: DMD 1.034 and 2.018 releases Walter Bright 09-Aug-2008 02:25 pm
.-# Re: DMD 1.034 and 2.018 releases Michael P. 08-Aug-2008 08:43 pm
.|-# Re: DMD 1.034 and 2.018 releases bearophile 08-Aug-2008 08:47 pm
.|.\# Re: DMD 1.034 and 2.018 releases Michael P. 08-Aug-2008 09:05 pm
.-# Re: DMD 1.034 and 2.018 releases JAnderson 09-Aug-2008 02:47 am
.|\# Re: DMD 1.034 and 2.018 releases Walter Bright 09-Aug-2008 03:39 am
.-# Re: DMD 1.034 and 2.018 releases Craig Black 09-Aug-2008 08:30 pm
.|\# Re: DMD 1.034 and 2.018 releases bearophile 09-Aug-2008 09:03 pm
.-# Re: DMD 1.034 and 2.018 releases Don 10-Aug-2008 10:27 am
.|\# Re: DMD 1.034 and 2.018 releases Walter Bright 10-Aug-2008 01:57 pm
.\# Re: DMD 1.034 and 2.018 releases Don 14-Aug-2008 09:20 am