It seems like DMD doesn't optimize tail recursion very well

Dave Dave_member at pathlink.com
Fri Jun 9 20:01:30 PDT 2006


Gregor Richards wrote:
> $ gdmd ack.d -O -release -inline -ofack-gdc
> $ ./ack-gdc
> 703 ms elapsed.
> $ dmd ack.d -O -release -inline -ofack-dmd
> gcc ack.o -o ack-dmd -m32 -lphobos -lpthread -lm
> $ ./ack-dmd
> 2373 ms elapsed.

I get the following. If dmd is reverted back to v0.139, it does much 
better, for whatever that is worth.

GDC v0.17 w/ 4.01 backend:
# gdmd -O -inline -release t.d
# time t

real    0m0.828s
user    0m0.824s
sys     0m0.000s

DMD v0.160:
# dmd -O -inline -release t.d
# time t

real    0m2.628s
user    0m2.572s
sys     0m0.000s

DMD v0.139:
# dmd -O -inline -release t.d
# time t

real    0m1.131s
user    0m1.124s
sys     0m0.004s



More information about the Digitalmars-d mailing list