使用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()它打电话是不可能的.
那是对的吗?