java - 在 Java 中转换原始类型的成本

标签 java casting primitive-types

我有一个用 Java 编写的算法,它迭代地进行原始转换,例如:

int val = (int) Math.max(val1, val2);

由于我正在尝试提高算法的性能,我想知道是否必须避免重复上述转换,例如通过使用类似的东西:

int val = ((val1>val2) ? val1 : val2);

PS:我搜索了 Stackoverflow,但没有找到类似的答案。

最佳答案

为了便于讨论,我们假设 val1 和 val2 都是 double 并且你仍然想得到一个 int (因为你说这只是一个例子)。

我建议先比较一下你打电话的时间

double val = Math.max(val1, val2)

对比:

int val = (int) Math.max(val1, val2);

如果你正确地运行这个基准测试(意思是在 JVM 中做 wormup 并测量 数百万个电话的时间) 与 Math.max() 相比,您很可能会发现转换中的时间量可以忽略不计

一般来说,在为了性能而让代码的可读性变差和变复杂之前, 首先,您需要知道性能提升是真实存在的。

关于java - 在 Java 中转换原始类型的成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17314679/

相关文章:

Java、时间相关对象和oracle to_date函数

java - 如何点击网页元素?

java - 动态转换为每个数组类型

c++ - 将 unsigned char 数组解释为 bool 数组

java - ListView 中滚动时使用的重用项目?

java - Android Studio 中的 NoClassDefFoundError

mysql - CAST 对 where 子句的性能。我们应该转换日期时间字符串输入吗?

c++ - 在 C++ 中,是否定义了通过 char* 删除基本类型(例如 uint32_t)的行为?

Javascript 字符串是原始类型?

java - 为什么包装类没有共同的父类(super class)型?