On Monday, 17 February 2014 at 11:34:43 UTC, bearophile wrote:
foreach (ref T element; this.data) {
element *= scalar;
}
Try to use:
data[] *= scalar;
for (auto i = 0; i < this.dim.size; ++i) {
this.data[i] += other.data[i];
}
Try to use:
data[] += other.data[];
for (auto i = 0; i < this.dim.size; ++i) {
this.data[i] -= other.data[i];
}
Try to use:
data[] -= other.data[];
While it is cleaner, I remember array operations (such as data[]
-= other.data[]) being significantly slower than doing it
yourself. I don't know if this has been fixed. Perhaps using -m64
helps this.
Also, I stress again that if you aren't compiling for 64-bit
(-m64), it's very likely to give a significant improvement
(because the optimizer will probably convert some of your
operations into SIMD operations). Using LDC / GDC would also give
a significant improvement.