Pytania dotyczące wydajności

0

Ok,

  • Kilkanaście razy na sekundę sprawdzam odległość dwóch elementów od siebie (pierwiastek sumy kwadratów różnicy współrzędnych - Pitagoras). Zamieniłem

    if (pos.distanceTo(pos2) < 10) {

    na if (pos.powDistanceTo(pos2) < 100) {

    
    Druga funkcja liczy z wzoru pitagorasa ale bez pierwiastka. Teraz nie wiem czy takie "optymalizacje" mają sens bo bez tego i tak program działa świetnie. Opłaca się tak troszkę "pooptymalizować"? Czy raczej efekty będą znikome?

Dlaczego IDE podpowiada żeby zamienić

for (Colective col : colectives) {
col.zrobCos();
}

na

colectives.stream().forEach((col) -> {
col.zrobCos();
});

i w czym to jest lepsze?

</li> </ul>
0

Poczytaj o stream w javie.

0

Pierwsze to niepotrzebna optymalizacja.
Optymalizacje zauważysz gdy proces który optymalizujesz pracuje w sposób ciągły przez zauważalny odcinek czasu (np. 50 ms).

Co do drugiego, to jakie to IDE?

0

Zgaduję, że NetBeans. W nowszej wersji sam coś takiego dostaję.

To jest zdaje się sugestia korzystania z lambdy. Ja to po prostu wyłączyłem.

0

Możesz to sprowadzić do:

colectives.stream().forEach(Colective::zrobCos);

,ale może podczepiając się pod temat: przy zwykłej klasie jakieś np. pojo to raczej chyba bez sensu co nie?

0

@karolinaa: To chyba ma tylko sens jeśli szykujesz się na parallel.
Bo innych zalet (na razie) w tym prostym wypadku nie znam.

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