我正在尝试找出一种加快3D阵列乘法的方法。我目前正在使用For循环进行乘法。
假设我们有一个1 x 3 x 100,000的数组,第一个切片是:
function toTree(arr, item) {
if (!item) {
item = arr.find(item => item.parent === null)
}
let parent = {...item}
parent.children =
arr.filter(x => x.parent === item.id)
.sort((a, b) => a.id - b.id)
.map(y => toTree(arr, y))
return parent
}
toTree(tasks)
我们有100,000片:
\begin{bmatrix}a_1&b_1&c_1\end{bmatrix}
我们想将其乘以3 x 3 x 100,000数组。假设我们有:
\begin{bmatrix}a_1&b_1&c_1\end{bmatrix}
.....................
\begin{bmatrix}a_{100000}&b_{100000}&c_{100000}\end{bmatrix}
再次,100,000片。
目前,我正在使用具有100,000次迭代的For循环遍历切片(每个循环简单地进行1x3乘以3x3矩阵乘法)。
非常快。但是我想知道是否还有其他更快的方法?
在上面的文章中,whuber提出了一种使用稀疏矩阵的更快方法。但是,当尺寸增加时,他的方法会变慢。本质上,对于任何1 x n x p乘以n x n x p数组,我都想提出一种比简单的For循环更快的方法。任何帮助将不胜感激!