Why DMD is so slow?
janderson
askme at me.com
Tue Jun 3 23:53:59 PDT 2008
janderson wrote:
> 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
DMD does seem to beat GDC on some tests. From memory I think its better
at integer then GDC.
-Joel
More information about the Digitalmars-d-learn
mailing list