2010-01-14 11 views

Odpowiedz

6

Owijarki, będące przedmiotami, zostają umieszczone w stercie. Prymitywy są po prostu "wartościami" i przechodzą w stos. Jest to bardziej efektywne, ponieważ dla zawiniętych prymitywów w stosie potrzebujesz (przynajmniej) zarówno wartości (która jest w stosie), jak i odniesienia do obiektu opakowania.

To, czy ten przyrost wydajności ma znaczenie, zależy od tego, co robisz. W przypadku ciężkiej pracy liczbowej zdecydowanie, ale w 99% przypadków jest to raczej irytujące. Po pierwsze, w ogóle nie możesz przechowywać prymitywów w Kolekcji; ulegają autoboxed. Tak więc jedynym sposobem na przechowywanie ich jest użycie zwykłych tablic, co z kolei może prowadzić do innych rodzajów nieefektywności (na przykład, jeśli trzeba zmienić ich rozmiar).

+0

Czy są jakieś inne powody niż przechowywanie? – GuruKulki

+0

Nie jestem w 100% pewny, jak działają tutaj wewnętrzne elementy, ale uważam, że aby obliczyć wszystko za pomocą liczb, maszyna musi najpierw wyodrębnić wartości z owijki (rozpakowywanie), która wymaga przynajmniej części pracy. Jednak optymalizacja środowiska uruchomieniowego JIT prawdopodobnie gra tutaj swoje sztuczki, więc różnica ta może być praktycznie pomijana w praktyce, nawet w programach intensywnych liczbowo. Należy to zmierzyć, aby mieć pewność. –

3

Ponieważ prymitywy są lżejsze i bardziej wydajne pod względem przetwarzania pamięci i procesora.

+0

Musimy wziąć to pod uwagę podczas pracy z urządzeniami mobilnymi/ręcznymi. –

+0

Ale proszę również rozważyć, czy ma on 10% lub 0,00001% wpływu w konkretnej sytuacji. Optymalizuj tylko, jeśli to ma znaczenie. –

2

Jedno słowo: wydajność.

Typy opakowania są również niezmienne, co czyni go ekstra kosztownym, jeśli ktoś chciałby na przykład użyć go do licznika pętli.

JVM ma również kody operacyjne do wykonywania bezpośrednio arytmetyki na elementach pierwotnych.

Powiązane problemy