commons-math3 の二次元行列用の型についてのメモ
BlockRealMatrix
キャッシュフレンドリーで速いらしい。
Array2DRowRealMatrix
double[][]
で表現されるひじょうに素直な実装
DiagonalMatrix
対角行列用の型。対角行列を扱うならコレを使うとメモリを節約できたりする。
OpenMapRealMatrix
open addressed map ベースの実装。sparse な行列ならコレを使うとよい。
初期化コストに関するベンチマーク
雑ですが。。
@Test
fun bench() {
val tries = 10000000
val startA = System.currentTimeMillis()
for (i in 0 until tries) {
Array2DRowRealMatrix(11, 11)
}
val endA = System.currentTimeMillis()
val startB = System.currentTimeMillis()
for (i in 0 until tries) {
BlockRealMatrix(11, 11)
}
val endB = System.currentTimeMillis()
println("A=${endA-startA} B=${endB-startB}")
}
で、
A=6992 B=2435
みたいな感じ。
Published: 2018-05-14(Mon) 02:10