Inherent code performance advantages of D over C?

Araq rumpf_a at web.de
Mon Dec 9 06:24:37 PST 2013


On Sunday, 8 December 2013 at 18:53:07 UTC, Walter Bright wrote:
> On 12/8/2013 2:13 AM, Araq wrote:
>> From this list only (7) is a valid point. All the others can 
>> be trivially dealt
>> with whole program optimization (1,2,3)
>
> If it's trivial, it's not happening. (1) would require solving 
> the halting problem.

Well ok when I say "easy" or "trivial" it doesn't mean anything 
;-).

(1) doesn't require solving the halting problem at all though. 
For optimizations all you need to do is to come up with an 
analysis that approximates the runtime behaviour in a 
conservative approach. ("When in doubt, assume it modifies this 
location.")

> (2) is impractical because there's no way for the programmer to 
> detect if his call stack is pure or not, so he can't reasonably 
> fix it to make it pure.

Well look at the subject: "inherent" vs "practical".

> (3) does require whole program analysis, which is done (as I 
> said) by the linker, and is not normally done. Will gcc/ld do 
> it? Nope. (It's not so trivial.)
>

Both GCC and LLVM can perform link time optimizations.

>> or coding conventions (4,5,6) (always
>> pass a (char*, len) pair around for efficient slicing).
>
> (4) just try retrofitting an existing C program to do this. I 
> have. You'll give it up soon :-)
>

Again -- the subject is "inherent code performance advantages". 
The average C program full of "if (errcode) goto errorHandler" is 
irrelevant to this discussion. BTW I would indeed add "D has 
exceptions" to your list.

> (5) it just doesn't happen in C code - it's too hard
>
> (6) I pretty much never see this happening in real C code - 
> it's not so trivial
>
>
>> Interestingly, things
>> that are encouraged in Ada (this is an array of integers of 
>> range 0..30, see
>> value range propagation) are much harder to recompute with 
>> whole program
>> optimization and D lacks them.
>
> You can do these in D with a library type.

And get the same (theoretical) advantages for optimizations? 
Perhaps.


More information about the Digitalmars-d mailing list