DolphinDB的矩阵在物理存储是按照列优先(column major)进行的。也就是说,矩阵在内存中的存储模型相当于是把矩阵的每一个列首尾连接起来占用了一段连续的空间。因此,按列读写矩阵比按行读写有更高的效率。下面我们通过具体代码来测试。
按行读写测试100次,耗时月1480ms
timer(100) { v = double(1..1000) m1 = matrix(DOUBLE,900,100) for(i in 0:900) m1[i,] = v[i:(i+100)] }
按列读写测试100次,耗时月22ms。比按行读写快近70倍。
timer(100){ x=double(1..1000) m1 = matrix(DOUBLE, 900, 100) for(i in 0:100) m1[i] = v[i:(i+900)] }