Phobos threads performance

The Anh Tran trtheanh at gmail.com
Mon Jul 21 13:14:41 PDT 2008


Don't use win to write Alioth game. :(
WaitForSingleObject is _much_ slower than pthread_mutex_lock
I'm still changing here & there in chame.d Hope it'll better.

D version allocate mem during the meeting loop.
I omitted that alloc in C++ ver.

bearophile wrote:
> I have taken a look at the Chameneos-redux multithread benchmarks, the explanations are are the bottom of this page:
> 
> http://shootout.alioth.debian.org/gp4/benchmark.php?test=chameneosredux&lang=all
> 
> (I think I have created a Psyco version almost 2X faster than the Python one).
> 
> This is the D + Phobos working implementation:
> http://shootout.alioth.debian.org/gp4/benchmark.php?test=chameneosredux&lang=dlang&id=0
> 
> On my Win PC with N = 1_000_000 that D version runs in about 10 seconds. My CPU has two cores, but the CPU usage is about 70-75% (while both the Java and C++ version push the cores to 100%).
> 
> 
> This is a C++ version, that I think looks very close to the D version (I think they are both translations of the Java version):
> https://alioth.debian.org/tracker/download.php/30402/411646/310955/2682/chame.cpp
> 
> To run it on Windows I have used:
> ftp://sources.redhat.com/pub/pthreads-win32/prebuilt-dll-2-8-0-release/
> Added files to MinGW:
>   pthread.h
>   sched.h
>   semaphore.h
>   libpthreadGC2.a
> Compiled code with:
>   g++ -O3 -s -mthreads chame.cpp -o chame -lpthreadGC2
> 
> With still n = 1_000_000 this C++ code runs in about 1.13 seconds.
> 
> Do you know why is the C++ so much faster, and why the D version doesn't uses the two cores fully?

> 
> Bye,
> bearophile


More information about the Digitalmars-d-learn mailing list