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.
