【发布时间】:2015-10-01 23:02:25
【问题描述】:
假设我有两个同样长的数字数组。我想创建第三个数组,这样:
c[0] = a[0] * b[0]
c[1] = a[1] * b[1]
...
如果我在 Matlab 中,我可以编写一个执行乘法的循环,如下所示:
for i=1:length(a)
c(i) = a(i) * b(i);
end
但我知道最好避免 for 循环,并且有一种方法可以做到这一点,那就是:
c = a .* b;
这对我来说很有意义,并且在两个 8192 长度的随机数数组上对其进行了多次计时(tic toc),.* 方法始终比 for 循环快约 3 倍。
所以现在我想在 Java 中将数组相乘。所以我写了一个for循环并说:
for (int i=0; i<a.length; i++) {
c[i] = a[i] * b[i];
}
我的问题是:有没有更好的方法来避免 for 循环?如果有,它有什么不同吗?在我看来,它在没有 for 循环的情况下运行得更快,因为它将数字相乘而不是串联,但我不知道引擎盖下发生了什么(就像编译器自己展开循环一样)。
【问题讨论】: