我在OpenCV上进行了几次矩阵计算,我无法理解为什么需要花费时间
操作1是:将320x1列向量乘以390x320矩阵,然后乘以72000x390矩阵。时间:~35毫秒。 操作1b是:将32x1列向量乘以390x32矩阵的10倍,然后乘以7200x390矩阵。时间:~35毫秒
操作2是:将320x1列向量乘以72000x320矩阵。时间:~30毫秒。 操作2b是:32x1列向量乘以7200x32矩阵的10倍。时间:~10毫秒
基本上在操作1中我总是使用大小为390的中间列向量,而我在操作2中跳过这个。但是我无法解释为什么当1b和1的速度相同时,操作2b比2快得多。
有什么想法吗?感谢
答案 0 :(得分:1)
查看每个操作要执行的乘法次数,我看到:
Operation 1: 390 * 320 = 124,800
Operation 1b: 10 *390 * 32 = 124,800
Operation 2: 72000 * 320 = 23,040,000
Operation 2b: 10 * 7200 * 32 = 2,304,000
操作1和1b需要相同的乘法量,但操作2需要乘以操作2b的10倍。