[phobos] Ndslice speed
Matthias Redies via phobos
phobos at puremagic.com
Sat Aug 27 12:43:03 PDT 2016
Hello,
I've come across the library experimental.ndslice, which is supposed to
mimic NumPy. In order to test it I wrote a very crude matrix multiplication:
http://pastebin.com/Ew4u2iVz
and for comparison I also implemented it in Fortran90:
http://pastebin.com/6afnVyZF
Then I used linux's "time" command to time them each:
ifort test.f90 && time ./a.out
600
real 0m0.154s
user 0m0.148s
sys 0m0.004s
dmd test.d && time ./test
1.16681e+08
600 600
real 0m6.770s
user 0m6.772s
sys 0m0.004s
I understand that dmd is not optimized for speed, but in the end both do
basically the same thing. Both implement 2D array and both array types
include the size of the array (unlike C). Given that both are compiled
languages the difference seems to be unreasonably large.
If I turn on boundschecking for Fortran I get:
ifort -check all test.f90 && time ./a.out
600
real 0m6.049s
user 0m6.044s
sys 0m0.004s
which is roughly the speed difference I'd expect, but if I use the
-boundscheck=off option for dmd that doesn't help. Am I using ndslice
correctly? Why is the speed difference so large? How do I speed it up?
Kind regards
Matthias
More information about the phobos
mailing list