On Sat, Dec 07, 2013 at 12:40:35AM +0100, bearophile wrote: [...] > Regarding Java performance matters, from my experience another > significant source of optimization in the JavaVM that is often > overlooked is that the JavaVM is able to partially unroll even loops > with a statically-unknown number of cycles. Currently I think > GCC/DMD/LDC2 are not able or willing to do this. [...]
Really? I've seen gcc/gdc unroll loops with unknown number of iterations, esp. when you're using -O3. It just unrolls into something like: loop_start: if (!loopCondition) goto end; loopBody(); if (!loopCondition) goto end; loopBody(); if (!loopCondition) goto end; loopBody(); if (!loopCondition) goto end; loopBody(); goto loop_start; end: ... I'm pretty sure I've seen gcc/gdc do this before. T -- Windows 95 was a joke, and Windows 98 was the punchline.