Avatar
return Matrix<R, n, p>(rows: a.rows, cols: b.cols, type: (a.type == b.type) ? a.type : .Default) { (i, k) in (0 ..< a.cols).sum { j in a[i, j] * b[j, k] } } 今こういう感じに書くようにしてみてて、 sum@_inlineable にすると、 original : 325.293 msec. imperative : 56.286 msec. pointer : 50.375 msec. これぐらいまで差が縮まりました。 この 250 msec の差は、200 x 200 回 closure を関数として呼び出してる分のオーバーヘッドなのかなとか想像してます🤔 (edited)