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.

Reply via email to