Avatar
Matrixのinitializerのほうは multiply1回につき1回なんで
7:43 AM
こっちは let grid = (0 ..< rows * cols).map { (index: Int) -> R in let (i, j) = index /% cols return g(i, j) }
7:43 AM
これで問題ないと思うんですけど
7:44 AM
行列要素ごとの↓が苦しい return (0 ..< a.cols) .map({j in a[i, j] * b[j, k]}) .reduce(0) {$0 + $1}
7:45 AM
10.12 s 96.2% 659.00 ms specialized closure #1 in static Matrix.multiply1<A>(a:b:) 3.70 s 35.1% 3.70 s _swift_release_ 2.27 s 21.6% 375.00 ms swift_bridgeObjectRetain 1.91 s 18.1% 0 s 0x7fff5dcb674f retainとreleaseで50%ぐらいかかってて、多分この正体が map の返り値。