Alright just found something: it's a constant optimization, if I replace process(14) by process(loop), I do get more similar timings: DMD -> time: 159690µs, y=-1.72651e+11 GDMD -> time: 115564µs, y=-1.72651e+11 G++ -> time: 107154µs, y=-1.72651e+11 I will do serious testing now, with a full library. However if this constant optimization could be integrated, would be nice ;)