我有两个向量,比如A:1xN和B:1xM。我想计算它们的外积,并将结果添加到NxM矩阵。现在,我将它分成两部分,首先计算(A')B,然后加上它。在分析时,第一步比添加(8x)要花费更多的时间。由于第一步中的乘法次数与第二步中的加法次数相同,仅仅是由于我的体系结构支持更快的加法,所以差异是什么?或者是在第一步中分配内存来存储结果的时间?f在matlab中的外积的性能
>> x = randn(1,10000);
>> y = randn(1,10000);
>> tic; z=x'*y; toc;
Elapsed time is 0.560743 seconds.
>> tic; z=z+z; toc;
Elapsed time is 0.132228 seconds.
>> tic; z=z.*z; toc;
Elapsed time is 0.124191 seconds.
所以我认为这不是一个多vs增加。 z = z + z和z = z。* z具有相似的时间。
显示您的代码并解释他们的时间安排? – Divakar 2014-12-05 15:01:04
乘以浮点值比添加浮点值需要更多的时间。你看到的行为可能是正常的 – 2014-12-05 15:06:33
那么,在编辑中,似乎并非如此。它可能在某些体系结构中,不在这里。 – user3287648 2014-12-05 15:11:25