On Saturday, 2 September 2017 at 17:00:46 UTC, Joakim wrote:
On Saturday, 2 September 2017 at 15:41:54 UTC, Joakim wrote:
D:
https://bitbucket.org/qznc/d-shootout/raw/898f7f3b3c5d55680229113e973ef95ece6f711a/progs/nbody/nbody.d
ldc 1.4 beta1, llvm 4.0.1
ldc2 -O3 nbody.d
The D version averages 2.5 seconds, the C++ version 6 seconds,
which means D would likely still be at the top of that n-body
ranking today.
Sorry, I assumed the D version worked fine and didn't bother to
check the output, turns out it needs two foreach loops changed
in advance(dt). Specifically, "Body i" should be changed to
"ref Body i" in both foreach statements, so the data is
actually updated. ;)
After that change, the C++ version wins by a little, 6 seconds
vs. 6.5 seconds for the D translation. I see that the C++
version directly invokes SIMD intrinsics, so perhaps that's to
be expected.
What needs to be adjusted for optimization? If you let me know it
I adjust it here
https://github.com/fkromer/exploringBB/blob/nbody/chp05/performance/nbody.d and/or https://github.com/fkromer/exploringBB/blob/nbody/chp05/performance/build and/or https://github.com/fkromer/exploringBB/blob/nbody/chp05/performance/run#L25