Czy takie obiekty jak Map czy ArrayList są "ciężkie"?

0

Nie wiem dlaczego (może przez to że przygodę z programowaniem zacząłem w c/c++) ale jak mam zadeklarować jakiś obiekt to zastanawiam się czy to przypadkiem nie jest wyciąganie armaty na komara. Często jestem zmuszony skorzystać z arraylist,map czy innych i nie piszę tego tak płynnie jak ify i pętle bo gdzieś mi się tam z tyłu głowy zapala lampka ostrzegawcza że to może być nie efficient ii zastanawiam się chwilę czy nie mogę tego objeść.

Ale do rzeczy, czy skorzystanie z map/arraylist jest jakieś czasochłonne w porównaniu do innych operacji? Mówię o częstym dodawaniu i odczytywaniu obiektów (np kilkaset razy na sekundę).

0

Jest już późno, więc za bardzo nie myślę, ale znalazłem w folderach taki artykulik http://eclipsesource.com/blogs/2014/04/11/3-good-reasons-to-avoid-arrays-in-java-interfaces/. Może rzuci Ci trochę światła na poruszone zagadnienie.

3

JVM przeprowadza szereg optymalizacji, które sprawiają, że schodzenie na niższy poziom nie ma sensu. Zobacz tutaj: Dlaczego foreach jest gorsze od for (beta)

ArrayList jest względnie lekką nakładką na tablicę pod spodem, więc przy parunastu obiektach lub więcej nie powinno być różnicy. No chyba, że mowa o np liście intów. Wtedy użycie tablicy i operowanie na małych intach przyniesie poprawę wydajności. Mapy z biblioteki standardowej Javy mogą być dość ciężkie (przede wszystkim ze względu na ilość zużytej pamięci), ale tak czy siak nie da się ich prosto zaemulować bez kolekcji z zachowaniem złożoności operacji.

Najlepiej to sobie porób benchmarki. Odpal profilera, zmierz ilość zużytej pamięci, czasu procesora, zrób zrzut sterty Javowej, poanalizuj offline, itp itd

NetBeans ma wbudowany całkiem OK profiler. Nie wiem jak inne IDE do Javy. IntelliJ chyba wymaga doinstalowania YourKita.

1 użytkowników online, w tym zalogowanych: 0, gości: 1