Why DMD is so slow?
janderson
askme at me.com
Mon Jun 2 23:24:29 PDT 2008
Marco wrote:
> I have written the code reported below to test execution speed of D in Windows and I have found that the same code is about 10 times slower if compiled using DMD w.r.t. GCD: 1.9 minutes in DMD vs 1.84 seconds in GDC ! Is there perhaps something wrong? why such a difference?
> Thank you.
>
> // begin of file mandel_d1.d
> /*
> DMD: dmd -inline -release -O mandel_d1.d
> GCD: gdc -O3 --fast-math -inline -lgphobos --expensive-optimizations mandel_d1.d
> */
>
> import std.stdio;
>
> int main()
> {
> cdouble a, b, c, z;
> double mand_re = 0, mand_im = 0;
>
> for (double y = -2; y < 2; y += 0.01) {
> for (double x = -2; x < 2; x += 0.01) {
> z = (x + mand_re) + (y + mand_im) * 1i;
> c = z;
> for (int i = 0; i < 10000; i++) {
> z = z * z + c;
> if(z.re * z.re + z.im * z.im > 4.0) {
> break;
> }
> }
> }
> }
> return 0;
> }
> // end of file mandel_d1.d
> ------------------
>
> H:\Codici\Benchmarks> ..\timethis.exe mandel_d1
>
> TimeThis : Command Line : mandel_d1
> TimeThis : Start Time : Mon Jun 02 11:28:41 2008
>
>
> TimeThis : Command Line : mandel_d1
> TimeThis : Start Time : Mon Jun 02 11:28:41 2008
> TimeThis : End Time : Mon Jun 02 11:30:35 2008
> TimeThis : Elapsed Time : 00:01:54.234
>
> H:\Codici\Benchmarks> ..\timethis mandel_gdc1
>
> TimeThis : Command Line : mandel_gdc1
> TimeThis : Start Time : Mon Jun 02 11:42:27 2008
>
>
> TimeThis : Command Line : mandel_gdc1
> TimeThis : Start Time : Mon Jun 02 11:42:27 2008
> TimeThis : End Time : Mon Jun 02 11:42:29 2008
> TimeThis : Elapsed Time : 00:00:01.843
>
It would be interesting to compare the ASM produced. DMD is not that
great at floating point, doesn't unroll so well and has a longer startup
time then GDC in my experience.
-Joel
More information about the Digitalmars-d-learn
mailing list