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