据我所知,Strassen矩阵乘法应该是最快的...但分治法在我的测试中显然是最快的...我做错了什么吗?还是这样正确?
指令是:“总耗时然后除以算法执行次数得到解决给定实例所需的时间”
因此,我只需要在每个方法中使用一个“counter ++”,并将时间“recorded/ counter ++”相除。
到目前为止,这是我的时间:(按顺序从上到下:classic、分治、strassen)(大小=矩阵大小)
大小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阶矩阵的示例:
第1个随机生成的矩阵: 10 57 33 70 6 12 38 70 20 41 65 98 83 0 31 73 第2个随机生成的矩阵: 11 70 54 79 2 51 38 71 27 53 37 86 48 87 20 41 经典乘法矩阵: 4475 11446 5327 10545 4476 9136 3586 7464 6761 15462 7003 14099 5254 13804 7089 12216 经过的时间:21232纳秒
指令是:“总耗时然后除以算法执行次数得到解决给定实例所需的时间”
因此,我只需要在每个方法中使用一个“counter ++”,并将时间“recorded/ counter ++”相除。
到目前为止,这是我的时间:(按顺序从上到下:classic、分治、strassen)(大小=矩阵大小)
大小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阶矩阵的示例:
第1个随机生成的矩阵: 10 57 33 70 6 12 38 70 20 41 65 98 83 0 31 73 第2个随机生成的矩阵: 11 70 54 79 2 51 38 71 27 53 37 86 48 87 20 41 经典乘法矩阵: 4475 11446 5327 10545 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纳秒