Wpis z mikrobloga

Zrobiłem klase która mierzy czas od rozpoczecia wykonwywania metody do końca wykonywania metody, zrobiłem 3 takie metody, każda miała obliczyć i wyświetlić wszystkie pierwiastki do 1000. Pierwsza z nich używała System.currentTimeMillis(), druga System.nanoTime() a trzecia Instant.now(). Czy ktoś jest mi w stanie powiedzieć skąd takie różnice w wynikach? Wiem że to pewnie głupie pytanie ale no #naukaprogramowania #java

1st method:14 (CurrentTimeMilis)
2nd method:5426548 (NanoTime)
3rd method:PT0.0029914S (Instant)
  • 2
@MrFisherman: środowisko uruchomieniowe javy przy uruchamianiu programu i w poczatkowej fazie jego działania wykonuje pewne operacje (m.in. kompilacja jit), które wpływaj na wyniki takich mikro testów (jeśli np nie przypisujesz wyniku funkcji to java może całkowicie olać jej wykonanie jeśli nie zmienia stanu). W zasadzie to co zmierzyłeś prawdopodobnie nie ma żadnego sensu. Najlepiej przeczytać np. https://www.oracle.com/technetwork/articles/java/architect-benchmarking-2266277.html?printOnly=1 i użyć jakiegoś toola do benchmarków (np. https://www.baeldung.com/java-microbenchmark-harness)