在这里,我有一个问题,当使用时。当我想为BigDecimal的一个对象乘以100时,哪种方法会更好。
顺便说一句,它将用于商业计算,所以我考虑的是精度而不是速度。
发布于 2014-01-22 19:14:48
选项3是最快的。选项1和2大致相同(选项一是乘以十倍)。乘以100,反而接近选项3的速度。
这是我的测试代码:
import java.math.BigDecimal;
public class TestingStuff {
public static void main(String[] args){
BigDecimal d2 = new BigDecimal(0); // to load the big decimal class outside the loop
long start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(99);
d2 = d.movePointRight(2);
}
long end = System.currentTimeMillis();
System.out.println("movePointRight: " + (end - start));
BigDecimal ten = new BigDecimal(10);
start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(99);
d2 = d.multiply(ten).multiply(ten);
}
end = System.currentTimeMillis();
System.out.println("multiply: " + (end - start));
start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(99);
d2 = d.scaleByPowerOfTen(2);
}
end = System.currentTimeMillis();
System.out.println("scaleByPowerOfTen: " + (end - start));
}
}
当然,您可以在自己的代码中自己尝试各种选项。如果你不能测量差异,那你为什么要优化呢?
https://stackoverflow.com/questions/21298457
复制相似问题