【发布时间】:2011-12-09 04:17:51
【问题描述】:
(抱歉,如果之前有人问过这个问题 - 我不敢相信它没有,但我找不到。也许我的搜索能力很弱。)
多年来,我“知道”Java 没有缩放数组的本机函数(即将每个元素乘以一个常数)。所以我一直在这样做:
for (int i=0; i<array.length; i++) {
array[i] = array[i] * scaleFactor;
}
这实际上是最有效的方法吗(例如,在这个应用程序中,它是一个包含大约 10000 个双精度数的数组)?还是有更好的办法?
【问题讨论】:
-
如果您对微优化感兴趣,那么您编写的内容通常可以通过使用 "loop unrolling" 来加速:en.wikipedia.org/wiki/Loop_unwinding 但是 JVM 可能已经如果代码的那部分被重复调用,那么为你这样做。 HotSpot VM 甚至有一个 XX:LoopUnrollLimit= 选项来“控制”该行为。
标签: java arrays performance vector multiplication