Я работаю с интерфейсом, который принимает тип Object в качестве входных данных.Это прискорбно для меня, поскольку у меня есть примитивные данные, которые мне иногда нужно передавать через интерфейс.Это, конечно, вынуждает меня работать.
Профилирование показало, что эта область является горячей точкой в коде.Таким образом, я изучаю альтернативы, чтобы сделать эту область быстрее.
Идея, которая у меня была сегодня для этого, состоит в том, чтобы предварительно выделить статический примитивный массив и сохранить в нем значение примитива, а затем передать массив через (и затемв реализации интерфейса, возьмите двойное из массива.
Я написал некоторый код, чтобы проверить это. Для достаточно высоких значений (10 миллионов) я вижу, что метод массива ЗНАЧИТЕЛЬНОбыстрее. Поскольку я увеличиваю количество итераций в моем тесте, эти два сходятся.
Мне интересно, задумывался ли кто-нибудь об этом подходе раньше, и есть ли какие-либо предложения о том, как хорошо это сравнить.
Пример кода:
Double data = Double.valueOf(VALUE);
inst.interface(data);
//inside interface(Object object)...
Double data = (Double) object;
double d = data.value();
против ...
doublearray[0] = VALUE;
inst.interface(data);
//inside interface(Object object)...
double[] data = (double[]) object;
double d = data[0];
Спасибо! RB