相关疑难解决方法(0)

使用JIT编译器的Collections.emptyList和空ArrayList的性能

使用Collections.emptyList()或空是否存在性能差异ArrayList,尤其是在使用JIT编译器时?

我可以想象 - 例如 - JIT编译器不执行内联或静态方法调用,因为执行的方法取决于类型.

编辑 我知道Collections.emptyList()返回一个不可变列表,ArrayList而是可变对象.

我的意思是,如果我将一个或另一个作为参数传递给方法,并且该方法不修改列表,那么是否限制了JIT编译器优化方法的可能性?

一个简单的例子(只是为了澄清我的意思):

int sum(List<Integer> list)
{
    int sum = 0;

    for(int i=0;i<list.size();++i)
      sum += list.get(i);

    return sum;
}
Run Code Online (Sandbox Code Playgroud)

如果我只使用ArrayListJIT编译器调用此方法可以内联ArrayList.get().如果我也用Collections.empty()它打电话是不可能的.

那是对的吗?

java performance jit jvm-hotspot

6
推荐指数
1
解决办法
1058
查看次数

标签 统计

java ×1

jit ×1

jvm-hotspot ×1

performance ×1