( fdavid | 2007. 01. 05., p – 15:55 )

Hat nem tudom, hogy te mit mertel, de vmit nagyon benezhettel.

Itt vannak az en mereseim:

-------------------------------------------------------------------------------------------
Gep adatai:

david@fokolompos /home/data/david/dev/sandbox/benchmark $ uname -a
Linux 2.6.18.2 #1 PREEMPT Sun Nov 19 07:30:12 CET 2006 i686 Intel(R) Celeron(R) CPU 2.40GHz GenuineIntel GNU/Linux

david@fokolompos /home/data/david/dev/sandbox/benchmark $ free -m
total used free shared buffers cached
Mem: 505 478 26 0 35 232
-/+ buffers/cache: 210 294
Swap: 486 0 486

-------------------------------------------------------------------------------------------
Kod:

C:


int main(void)
{
    const int arraySize = 30000;
    int myArray[arraySize];
    int i;
    int j;
    for (i = 0; i < arraySize; i++)
    {
        myArray[i] = i * i % 33;
    }
    for (i = 0; i < arraySize; i++)
    {
        for (j = i + 1; j < arraySize; j++)
        {
            myArray[(i+j)%arraySize] = (i + myArray[i] + myArray[j] * 17) % 33;
        }
    }
    return 0;
}

C++:


int main(void)
{
    const int arraySize = 30000;
    int myArray[arraySize];
    for (int i = 0; i < arraySize; i++)
    {
        myArray[i] = i * i % 33;
    }
    for (int i = 0; i < arraySize; i++)
    {
        for (int j = i + 1; j < arraySize; j++)
        {
            myArray[(i+j)%arraySize] = (i + myArray[i] + myArray[j] * 17) % 33;
        }
    }
    return 0;
}

D:


int main()
{
    const int arraySize = 30000;
    int[arraySize] myArray;
    for (int i = 0; i < arraySize; i++)
    {
        myArray[i] = i * i % 33;
    }
    for (int i = 0; i < arraySize; i++)
    {
        for (int j = i + 1; j < arraySize; j++)
        {
            myArray[(i+j)%arraySize] = (i + myArray[i] + myArray[j] * 17) % 33;
        }
    }
    return 0;
}

-------------------------------------------------------------------------------------------
Makefile:


all: 
	gcc -mtune=pentium3 -O2 -pipe test_cpp.cpp -o test_cpp
	gcc -mtune=pentium3 -O2 -pipe test_c.c -o test_c
	dmd test_d.d -O

-------------------------------------------------------------------------------------------
Forditok:

dmd:
david@fokolompos /home/data/david/dev/sandbox/benchmark $ dmd -v
Digital Mars D Compiler v0.173
Copyright (c) 1999-2006 by Digital Mars written by Walter Bright

gcc:
david@fokolompos /home/data/david/dev/sandbox/benchmark $ gcc -v
Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/specs
Configured with: /var/tmp/portage/gcc-3.4.6-r1/work/gcc-3.4.6/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.4.6 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.6 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.6/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.6/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/include/g++-v3 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --disable-libgcj --enable-languages=c,c++,f77 --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9)

-------------------------------------------------------------------------------------------
Meresi eredmenyek:

david@fokolompos /home/data/david/dev/sandbox/benchmark $ time ./test_c

real 0m18.017s
user 0m17.757s
sys 0m0.216s

david@fokolompos /home/data/david/dev/sandbox/benchmark $ time ./test_cpp

real 0m14.330s
user 0m14.109s
sys 0m0.180s

david@fokolompos /home/data/david/dev/sandbox/benchmark $ time ./test_d

real 0m16.843s
user 0m16.617s
sys 0m0.180s

-------------------------------------------------------------------------------------------
Megjegyzes:

Javat nem teszteltem, mert nem akarok hosszu flamet a Java optimalizalasarol. Nekem most eleg volt a C, C++, D.

-------------------------------------------------------------------------------------------
Konkluzio:

Nem latom a szignifikans kulonbseget.