通过传入单个元素原始数组避免装箱

use*_*605 10 java autoboxing boxing unboxing interface

我正在使用一个以Object类型为输入的接口.这对我来说是不幸的,因为我有时需要通过界面传递原始数据.这当然迫使我陷入困境.

分析表明该区域是代码中的热点.因此,我正在探索使这一领域更快的替代方案.

我今天想到的一个想法是预先分配一个静态原始数组,并将原始值存储在其中,然后传递数组(然后在接口的实现中,抓住数组中的双精度数.

我已经编写了一些代码来测试这个.对于相当高的值(1000万),我发现数组方法明显更快.当我增加测试的迭代次数时,两者会聚.

我想知道是否有人曾经考虑过这种方法,如果有任何关于如何对此进行基准测试的建议.

示例代码:

Double data = Double.valueOf(VALUE);
inst.interface(data);
//inside interface(Object object)...
Double data = (Double) object;
double d = data.value();
Run Code Online (Sandbox Code Playgroud)

VS ...

doublearray[0] = VALUE;
inst.interface(data);
//inside interface(Object object)...
double[] data = (double[]) object;
double d = data[0];
Run Code Online (Sandbox Code Playgroud)

谢谢!RB

Osc*_*mez 1

我会选择数组选项,因为只分配一个对象(数组),而不是必须在 中分配一个对象的次数autoboxing,即使valueOf()针对某些值进行了优化。