2011-01-03 13 views
10

Dla uniwersytetów wykonuję modyfikacje kodu bajtowego i analizuję ich wpływ na wydajność programów Java. Dlatego potrzebuję programów Java - w najlepszym przypadku używanych w produkcji - i odpowiednich testów porównawczych. Na przykład mam już HyperSQL i mierzę jego wydajność przez program testowy PolePosition. Programy Java działające na maszynie JVM bez kompilatora JIT. Dzięki za pomoc!Benchmarking programów Java

P.S .: Nie mogę używać programów do testowania wydajności JVM lub samego języka Java (np. Wide Finder).

+0

Nie jest jasne, co chcesz zrobić. Czy możesz wyjaśnić to nieco dalej? – Riduidel

+1

kod bajtowy zwykle nie jest zoptymalizowany, zamiast tego JIT zoptymalizuje natywny kod, który tworzy. W związku z tym może się okazać, że zmiana kodu bajtowego nie poprawi wydajności w sposób, jakiego można się spodziewać, ponieważ zależy to od tego, jak zostanie zamieniony na kod natywny. –

+0

@ Peter, myślę, że on szuka scenariuszy, które dają najlepszą wydajność – UVM

Odpowiedz

0

Każdy doświadczony programista powie, że przedwczesna optymalizacja jest gorsza niż brak optymalizacji. To w najlepszym wypadku marnowanie zasobów i źródło nieskończonych przyszłych (i bieżących) problemów.

Bez kontekstu, każda aplikacja, nawet z dziennikami testów porównawczych, nie powie nic. Mogę mieć pętlę, która zajmie 10 godzin, test porównawczy pokaże, że trwa prawie wiecznie, ale nie obchodzi mnie to, ponieważ nie jest to krytyczne z punktu widzenia wydajności. Inna pętla zajmuje tylko milisekundę, ale może być za długa, ponieważ powoduje, że nie mogę przechwycić przychodzących pakietów danych przybywających w odstępach 100 mikrosekund.

Dwie skrajności, ale obie mogą się zdarzyć (nawet w tej samej aplikacji) i nigdy nie wiadomo, chyba że wiesz, że aplikacja, jak jest używana, co robi, w jakich warunkach i wymaganiach.

Jeśli interakcja z interfejsem użytkownika trwa 1/2 sekundy, aby renderować, może być zbyt długi lub nie ma problemu, jaki jest kontekst? Jakie są oczekiwania użytkowników?

8

Caliper to narzędzie dostarczane przez Google w zakresie mikro-testów porównawczych. Dostarczy ci wykresów i wszystkiego. Ludzie, którzy umieścili to narzędzie razem, są bardzo obeznani z zasadą "Przedwczesna optymalizacja jest źródłem wszelkiego zła" (do punktu Jwntinga) i są bardzo ostrożni w wyjaśnianiu roli testu porównawczego.