Pracuję z interfejsem, który przyjmuje typ Object jako dane wejściowe. Jest to niefortunne dla mnie, ponieważ mam prymitywne dane, które czasami muszę przekazać za pośrednictwem interfejsu. To oczywiście zmusza mnie do boksowania.Unikanie boksowania poprzez przekazywanie w prymitywnej tablicy pojedynczego elementu
Profilowanie pokazało ten obszar jako punkt aktywny w kodzie. W ten sposób badam alternatywy, aby przyspieszyć ten obszar.
Pomysł, który miałem dzisiaj to wcześniejsza alokacja statycznej tablicy prymitywnej i przechowywanie w niej prymitywnej wartości, a następnie przekazanie tablicy (a następnie w implementacji interfejsu, pobranie podwójnej wartości z tablica:
Napisałem kod w celu przetestowania tego.Z uwagi na dość wysokie wartości (10 milionów) widzę, że metoda tablicowa jest ZNACZĄCO szybsza.Jak zwiększam liczbę iteracji mojego testu, dwa Zbierz:
Zastanawiam się, czy ktoś już wcześniej pomyślał o tym podejściu i czy są jakieś sugestie, jak to testować.
Przykład Kod:
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];
Dzięki! RB
dlaczego więc nie mieć globalnej zmiennej "podwójnej"? – irreputable