gpt4 book ai didi

Java JIT 编译可以在返回始终相同的值时优化方法吗?

转载 作者:行者123 更新时间:2023-11-29 04:15:55 25 4
gpt4 key购买 nike

在我的 Java 应用程序中,我有一些方法总是返回相同的东西。那么,JIT 是否能够检测这些方法并优化性能(克隆结果而不是计算结果或其他方式)?

优化候选方法示例:

private List<String> get() {
return Arrays.asList(Operation.values()).stream().map(Object::toString).collect(Collectors.toList());
}

在我看来这是不可能的,但我不确定。

最佳答案

Common subexpression elimination (CSE) 是一种众所周知的编译器优化,可避免重新计算相同的表达式。一般来说,JVM 有能力进行这样的优化。

但这不是你的情况。给定的 get() 方法返回相同的东西。

首先,假设Operation是枚举类型,Operation.values()每次都返回新的数组。它必须返回一个新对象以保护原始数组不被修改。

Collectors.toList() 在其当前实现中每次也返回一个新的 ArrayList。 JVM 无法对此分配做任何事情,因为返回的对象在外部可见。

关于Java JIT 编译可以在返回始终相同的值时优化方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52390299/

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