Fibonacci, czyli wprawki (część 2: porównanie efektywności algorytmów, JMH)

W poprzednim odcinku…
Zdefiniowano zadanie, interfejs, testy i przedstawiono trzy implementacje spełniające zadane kryteria.
Teraz czas na porównanie wydajności poszczególnych implementacji

JMH wprowadzenie

JMH (Java Microbenchmark Harness) jest elementem OpenJDK. Potrafi policzyć czas wykonania dla każdej oznakowanej metody. Każdą z testowanych metod możemy odpowiednio parametryzować, określając ilość wątków, ilość niezależnych instancji (fork) na których metoda będzie testowana, ilość cykli rozgrzewania się JVM, ilość cykli testowych itd.

Czytaj dalej Fibonacci, czyli wprawki (część 2: porównanie efektywności algorytmów, JMH)

Zakup sukienki… No przecież jestem normalna!

Niezbyt gruba i nie chuda (niestety), nie za wysoka ale i nie karłowata. Rozmiar 38, 158  cm wzrostu, no chyba to żadne dziwo? I na te parametry szukam sukienki, ma być granatowa, tuż za kolano, prosta, z długim, prostym rękawem (nie z mankietem i nie rozszerzanym na końcu), pod szyją gładka i lekko podcięta, (nie dekolt i nie golf). Czytaj dalej Zakup sukienki… No przecież jestem normalna!

Rozmiar szczęścia

Jeżeli szczęście byłoby na sprzedaż, to ludzie kupowaliby z pewnością zawsze o jeden numer za duże.
Perl Buck

Uśmiechnęłam się jak przeczytałam dzisiejszą poranną mądrość korporacyjną ale potem pomyślałam – ale czy to źle?
Problem nie w kupieniu za dużego o numer, problem jest raczej w akceptacji tego co mamy. Bo te szczęścia trafiają się nam różne, nie są szyte na nasz rozmiar. Są czasem za duże, częściej za małe a już najrzadziej takie w sam raz. Ale przecież ze wszystkimi warto żyć w przyjaźni, przyjaźń ze swoim szczęściem brzmi dobrze!

Fibonacci, czyli wprawki (część 1: implementacje)

Niniejszy tekst opiera się na pomyśle wygenerowanym w moim sympatycznym korpo. Główne cele powstania tekstu to:

  • Wprowadzenie do podstaw testowania
  • Pokazanie, że dane zagadnienie można rozwiązać na różne sposoby
  • Pokazanie roli benchmarków w procesie powstawania kodu i oceny rozwiązań. Jak wybierając różne implementacje możemy wpływać na wydajność rozwiązania
  • I z zupełnie innej bajki. Pokazanie przy okazji implementacji serwera NIO, czyli czegoś co jest dzisiaj gorącym hitem.

Dziękuję Dorocie (sąsiadka w open space), która bezpośrednio mnie zainspirowała do powstania tego tekstu. Bez Ciebie Dorota, by nie powstał.

Pierwsza część wpisu to (jak mawiał klasyk) oczywista oczywistość. Implementacje algorytmu generowania liczb Fibonacciego są ogólnie znane, niemniej przytoczę je tutaj, by w dalszych częściach odnieść się do konkretnych implementacji.

Czytaj dalej Fibonacci, czyli wprawki (część 1: implementacje)