Inherent code performance advantages of D over C?

Walter Bright newshound2 at digitalmars.com
Mon Dec 9 00:45:37 PST 2013


On 12/9/2013 12:05 AM, Jacob Carlborg wrote:
> With DMD 2.064.2 produce the exact same assembly code for "foo" and "main" with
> our without "pure". I compiled with "dmd -O -release foo.d", am I doing
> something wrong?

Try this:

   pure int foo (int a, int b) nothrow {
     return a + b;
   }

   int test() {
     return foo(1, 2) + foo(1, 2);
   }

Compile with:

   dmd foo -O -release -c

And dump the assembly:

             push    EAX
             mov     EAX,2
             push    1
             call    near ptr _D3foo3fooFNaNbiiZi
             add     EAX,EAX
             pop     ECX
             ret

Granted, more cases can be done, but it *does* take advantage of purity here and 
there.


>> This is about inherent language opportunities, not whether current
>> implementations fall short or not.
>
> I think most people will care about what's working right now. Not what could
> possibly work sometime in the future.

One cannot do better optimization if the language does not allow it.



More information about the Digitalmars-d mailing list