据我了解,Strassen 的矩阵相乘方法应该是最快的……但分治法显然是我测试中最快的……我做错了什么吗?或者这是正确的吗?
指令是:“然后将花费的总时间除以执行算法的次数,以获得解决给定实例所花费的时间”
所以我在每个方法中都有一个单独的“counter++”,并划分时间“recorded / counter++”
到目前为止,这是我的时代:(按自上而下的顺序:经典、分治法、施特拉森)(大小 = 矩阵大小)
尺寸 2
经过时间:8660 纳秒
经过时间:3849 纳秒
经过的时间:5377 纳秒
尺寸 4
已用时间:24864 纳秒
经过时间:3080 纳秒
经过时间:5229 纳秒
8 号
经过时间:125435 纳秒
经过时间:2920 纳秒
经过时间:5196 纳秒
尺寸 16
已用时间:867149 纳秒
已用时间:1559 纳秒
经过时间:2853 纳秒
尺寸 32
已用时间:5191721 纳秒
经过时间:972 纳秒
经过的时间:1722 纳秒
尺寸 64
经过的时间:8155785 纳秒
经过时间:874 纳秒
经过时间:1696 纳秒
样本输出这是我输出的大小为 4 的矩阵的示例:
第一个随机生成矩阵:10 57 33 70
6 12 38 70
20 41 65 98
83 0 31 73
第二个随机生成矩阵:11 70 54 79
2 51 38 71
27 53 37 86
48 87 20 41
经典乘法矩阵:4475 10541
4476 9136 3586 7464
6761 15462 7003 14099
5254 13804 7089 12216
经过时间:21232 纳秒
分治乘法矩阵:4475 11446 5327 10545
4476 9136 3586 7464
6761 15462 7003 14099
5254 13804 7089 12216
经过时间:3042 纳秒
Strassen 乘法矩阵:4475 11446 5327 10545
4476 9136 3586 7464
6761 15462 7003 14099
5254 13804 7089 12216
经过时间:5303 纳秒