首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当一个方法总是返回相同的值时,Java JIT编译可以优化它吗?

当一个方法总是返回相同的值时,Java JIT编译可以优化它吗?
EN

Stack Overflow用户
提问于 2018-09-18 23:46:53
回答 1查看 123关注 0票数 1

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

优化的候选方法示例:

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-19 07:26:14

Common subexpression elimination (CSE)是一种著名的编译器优化,可避免重复计算相同的表达式。一般而言,JVM能够实现这样的优化。

但这不是你的案子。给定的get()方法不会返回也会返回相同的内容。

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52390299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档