Java Double vs double:类类型 vs primitive type
我很好奇Java的类和double的基元类型之间的性能差异是什么。因此,我创建了一个小基准测试,发现类类型比基元类型慢3x-7x。(本地计算机 OSX 上为 3 倍,ideone 上为 7 倍)
这是测试:
class Main {
public static void main(String args[]) {
long bigDTime, littleDTime;
{
long start = System.nanoTime();
Double d = 0.0;
for (Double i = 0.0; i < 1432143.341; i += 0.1) {
d += i;
}
long end = System.nanoTime();
bigDTime = end - start;
System.out.println(bigDTime);
}
{
long start = System.nanoTime();
double d = 0.0;
for (double i = 0.0; i < 1432143.341; i += 0.1) {
d += i;
}
long end = System.nanoTime();
littleDTime = end - start;
System.out.println(littleDTime);
}
System.out.println("D/d = " + (bigDTime / littleDTime));
}
}
那么,为什么双打类型要慢得多呢?为什么它甚至实现为允许数学运算符?