aspirew
05/06/2024, 7:50 PMaspirew
05/06/2024, 8:28 PM@JsExport
fun execute(matrix1: JsArray<JsNumber>, matrix2: JsArray<JsNumber>, size: Int) {
val result = MutableList(size * size) { 0.0 }
for (i in 0 until size) {
for (j in 0 until size) {
var sum = 0.0
for (k in 0 until size) {
val num1 = matrix1[i * size + k]!!.toInt()
val num2 = matrix2[k * size + j]!!.toInt()
sum += num1 * num2
}
result[i * size + j] = sum
}
}
}
Artem Kobzar
05/07/2024, 7:23 AMSvyatoslav Kuzmich [JB]
05/07/2024, 7:51 AMJsArray
is slow, it performs non-inlined Wasm->JS call for each element access. To speed things up, it might be better to copy JsArray
into IntArray
or DoubleArray
just once, and then do a lot of repeated actions on them:
val fasterMatrix1 = IntArray(size) { matrix1[it]!!.toInt() }
aspirew
05/07/2024, 8:58 AM