gpt4 book ai didi

Java:原始类型转换是否会影响性能?

转载 作者:行者123 更新时间:2023-12-02 04:51:14 24 4
gpt4 key购买 nike

分配 long 更快吗?值 int使用强制转换或正在使用 long 的变量变量更快?

或者这是消耗更多内存和处理更多数据之间的选择?

这是一个示例测试:

import java.time.Duration;
import java.time.Instant;

public class NanoTest {
final int loop = 20000;

public void testNoCasting() {
long sum = 0;
long time = System.currentTimeMillis();

for (int i = 0; i < loop; i++) {
sum += System.currentTimeMillis() - time;
}

System.out.println(sum);
}

public void testIntCasting() {
int sum = 0;
long time = System.currentTimeMillis();

for (int i = 0; i < loop; i++) {
sum += (int) (System.currentTimeMillis() - time);
}

System.out.println(sum);
}

public static void main(String[] args) {
NanoTest nt = new NanoTest();

Instant start = Instant.now();

nt.testNoCasting(); // or nt.testIntCasting();

Instant end = Instant.now();

System.out.print("Duration: ");
System.out.println(Duration.between(start, end).getNano());

}
}

最佳答案

从 long 到 int 的类型转换只会忽略前导 32 位,因此它应该或多或少是免费的。

长(=64 位)操作在 32 位 CPU 上成本更高 - 32 位 CPU 将需要两条机器指令来添加两个 64 位数字(其他操作可能需要更多)。在 64 位 CPU 上,CPU 时间不应有差异。

相反的(隐式)转换(从 int 到 long)需要“sign extension ”,这意味着高位从较小类型的最高位填充。因此它实际上可能有一个(小的)成本,因为它不仅忽略高位,而且需要将它们带入明确定义的状态。

关于Java:原始类型转换是否会影响性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29217461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com