Wpis z mikrobloga

#java #programowanie

To czas na kolejną część serii o wydajności w javie, popularnych mitach itd, jako że w poprzednim wpisie były 3 propozycje co sprawdzić, to uznałem że sprawdzę wszystkie 3 zamiast własnych.

https://blog.gotofinal.com/java/benchmark/performance/2017/07/17/performance-of-java-2.html

Wołam też osoby które chciały poszczególnych testów:
@AwizisieAkat / @zly_dzien "Streamy - np. sumowanie tablicy ręcznie w forze vs za pomocą streama"
@b0lec - pętla z try/catch zamiast sprawdzaniem indexu, nawet ciekawe wyniki wyszły.
Ponownie AwizisieAkat - lambdy a klasy, tutaj nic specjalnego, no ale mit obalony ( )

No i jakiś tag do czarnolistowania oczywiście: #gotojava
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@GotoFinal: Osobiście lepiej by mi się czytało jak by były tabelki z porównaniem performance, ale takie czytelne aby można było jednym rzutem oka przeczytać problem, i wyniki, a jak ktoś chce to wywody :)

Albo jakieś jeno podsumowanie na końcu, to jest najszybsze, to jest najgorsze koniec ;)
  • Odpowiedz
@LowcaG: są wyniki przecież, tylko do pętli zjadłem, bo było tak dużo przypadków że za długie to było - więc jest tylko link.
I na koniec każdego punktu też jest coś na wzór podsumowania co w końcu lepsze lub czego kiedy używać.
  • Odpowiedz
są wyniki przecież, tylko do pętli zjadłem, bo było tak dużo przypadków że za długie to było - więc jest tylko link.


@GotoFinal: tak, waśnie od pętli zacząłem z ciekawości i tych wyników szukałem na widoku, (Tak wiem, był link,a le to też nie jest na szybkie spojrzenie).

Po prostu (ale tylko moim zdaniem) coś nie do końca jest z czytelnością całości nie wiem co, bo treść ok, ale jakoś no włąsnie
  • Odpowiedz
lambdas are implemented with anonymous classes


@GotoFinal: to nie do końca jest prawda, są dość duże różnice w bytecodzie pomiędzy nimi, np. korzystając z lambdy nie jest tworzony nowy obiekt, a dodatkowo jeśli zobaczymy jakie pliki wypluł kompilator, to przy korzystaniu z anonimowych klas będą tam pliki Klasa.class, Klasa$1.class, a przy korzystaniu z lambd tylko jeden
  • Odpowiedz
@AwizisieAkat: no to trochę uproszczenie, ale ogólnie generuje specjalne klasy i metody, nawet mają specjalne oznaczenie a nazwie bo używają ukośnika - tak je java rozpoznaje. A do tego dochodzą magie handlerów i invokedynamic, tak że te lambdy są generowane w dużej części w runtime
  • Odpowiedz
@krazben: nope, jednak to średnio obiekt testów tutaj + w takim kodzie nie powstaje za wiele obiektów, bo wszystkie są cały czas używane, więc i GC nie ma za bardzo co robić, no i to nie jest test jak bardzo dławiący się GC spowalnia kod :D
  • Odpowiedz