Dynamic Closure + Lazy Arguments = Performance Killer?
bearophile
bearophileHUGS at lycos.com
Fri Oct 24 23:08:27 PDT 2008
Jason House:
> The following spends 90% of its time in _d_alloc_memory
> void bar(lazy int i){}
> void foo(int i){ bar(i); }
> void main(){ foreach(int i; 1..1000000) foo(i); }
> Compiling with -O -release reduces it to 88% :)
I see. So I presume it becomes quite difficult for D2 to compute up to the 25th term of this sequence (the D code is in the middle of the page) (it takes just few seconds to run on D1):
http://en.wikipedia.org/wiki/Man_or_boy_test
What syntax can we use to avoid heap allocation? Few ideas:
void bar(lazy int i){} // like D1
void bar(scope lazy int i){} // like D1
void bar(closure int i){} // like current D2
Bye,
bearophile
More information about the Digitalmars-d
mailing list