I was playing around my ES and different ways of doing it with D.

I end up with a performance test of alias func vs ranges vs opApply.

code here:
https://dpaste.dzfl.pl/a2eff240552f

Results on my machine win 10 x64, compiling with:
dub run --build=release --arch=x86 --compiler=ldc2
(unable to test with gdc because https://forum.dlang.org/thread/bfmbvxtnqfhhgquay...@forum.dlang.org)

Alias func: ~40ms
Range Type(front, popFront, emtpy): ~50ms
OpApply: ~25ms

So first, if I make some really dumb relate to profiling speed or any D code let me know!

1) I thought that ranges were the fastest, but it got the least performant code.
2) opApply was faster than alias func. Its suprising for me.
3) Not possible to return multiple values. So in the front() method I Wrapped a node of pointers.(maybe a performance impact here?, there is a better way of doing it? )
4) there are no equivalent of declaring Type& x; (ref type) right?
5) I saw sometimes people saying that oApply will be removed. But i find it very powerfull (multiple returns for foreach is a must! eg: foreach(x, y ; myrange) ), and on this case, faster than the others.

PS: I know that the performance difference is minimal and may not be noticeable on most(all) use cases, this is just for fun/knowledge with profiling and to understand D behaviors :)






Reply via email to