Performance test

0

Witam,
mam pewien problem, w którym za pewne wielu z Was, bardziej doświadczonych może mi pomóc.

Mam pewien algorytm przeszukiwania grafu (Java)
Mam plik z kodem performance testu.
Muszę używać NetBeansa.

Problem w tym, ze gdy odpalam test (klikam na plik i próbuję Run file, Debug file, Test file)
to test przechodzi (passed) i pokazuje wynik w sekundach.
Ale to samo dzieje się gdy uruchomię kod z każdego innego testu (nie tylko performance).

Wiem, ze to mało informacji ale może ktoś wie czy ja popełniam błąd w rozumowaniu? Może taki performance test trzeba odpalić jakoś inaczej?

0

A ten performance test nie wypluwa żadnych wyników na konsolę lub do jakiegoś pliku?

0

Wypluwa na output poszczególne kroki algorytmu ale nic związanego z wydajnością (jakieś czasy czy coś takiego)

0

To może od drugiej strony.
Jak taki test powinien wyglądać w Javie. Mam klasę obiektu, dla którego metody chcę zrobić test wydajnościowy.

0

W typowej JVM jest JIT, czyli kompilacja w locie. VMka HotSpot, jak sama nazwa wskazuje, wyszukuje gorące miejsca, czyli takie miejsca w kodzie, które są często wykonywane i kompiluje je wtedy do kodu natywnego. Stað pojęcie rozgrzewania JVMki, a konkretniej HotSpota. Polega to na tym, że żeby zmierzyć wydajność jakiegoś kawałka kodu należy go najpierw rozgrzać, by HotSpot go skompilował.

Jak już się rozgrzeje JVMkę to wydajność można mierzyć prostym System.currentTimeMillis(). Mierzymy tylko wydajność kodu po rozgrzaniu.

Niestety System.currentTimeMillis() jest słabym pomysłem jeśli chodzi o testy programów wielowątkowych odpalanych na wielordzeniowym procesorze, bo ta funkcja mierzy tylko czas rzeczywisty, a nie czas procesora. W takich przypadkach trzeba chyba po prostu się pogodzić z tym, że bajtkod na początku jest interpretowany i kompilowany w locie i by zminimalizować wpływ tych rzeczy na pomiar wydajności pasowałoby po prostu odpalić testy w jak największej ilości iteracji.

0

Dzięki za obszerną odpowiedź.
Mnie chodzi o prosty akademicki przykład.
Mam algorytm, dajmy na to jaki pathfinding po węzłach grafu.

Chciałbym napisać dla niego test wydajnościowy.
Nie wiem jak sie do tego zabrać, a nie proszę też o gotowca.
Chodzi mi bardziej o pseudo kod, schemat jakiś, ew. metody które np liczą czas (np wywołana przed wywołaniem metody algorytmu, i po).
Czy takie rzeczy są w JUnit np?

0

@JavaTester nie bo JUnit jest do testów jednostkowych, które służą do szukania błędów, a nie do mierzenia czasu... Ty szukasz profilera (JProfiler, JMeter)

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