Mam za zadanie porównać wydajność metod: add(), remove(), contains(), dla kolekcji: ArrayList, HashSet, LinkedList, Stack, Vector, PriorityQueue i TreeSet. W kolekcjach mają być przechowywane int/Integer. I mam sprawdzić czas wykonania operacji i ilość pamięci do przechowywania obiektu w pamięci. I tu jest problem bo nie wiem jak się za to zabrać. Jest to gdzieś w dokumentacji czy trzeba samemu jakiś kod napisać?
http://openjdk.java.net/projects/code-tools/jmh/ - jedyne narzędzie które może być wykorzystywane do mierzenia wydajności na JVMach
rubaszny_karp napisał(a):
http://openjdk.java.net/projects/code-tools/jmh/ - jedyne narzędzie które może być wykorzystywane do mierzenia wydajności na JVMach
Eeee tam. Jest jeszcze na przykład http://scalameter.github.io/ i ma nawet API Javowe: http://scalameter.github.io/home/gettingstarted/0.7/javausage/index.html
Eeee tam. Jest jeszcze na przykład http://scalameter.github.io/ i ma nawet API Javowe: http://scalameter.github.io/home/gettingstarted/0.7/javausage/index.html
Nie neguje (w sumie, to nawet o nim nie słyszałem, każda konferencja, każda prezentacja to JMH) - pozwolisz jednak że zaufam Aleksey Shipilëv ;D
@Wibowit @rubaszny_karp
A nie można po prostu jak Bóg przykazał
long start = System.nanoTime();
...
(operacje na kolekcjach w wielkiej skali argumentów wejściowych)
...
long end = System.nanoTime();
System.out.println("Tym razem zajęło: " + ((end - start) / 1000) + "us." );
Pinek napisał(a):
@Wibowit @rubaszny_karp
A nie można po prostu jak Bóg przykazałlong start = System.nanoTime(); ... (operacje na kolekcjach w wielkiej skali argumentów wejściowych) ... long end = System.nanoTime(); System.out.println("Tym razem zajęło: " + ((end - start) / 1000) + "ms." );
Ok ale jak z pamięcią do przechowywania jednego argumentu w kolekcji?
Pinek napisał(a):
@Wibowit @rubaszny_karp
A nie można po prostu jak Bóg przykazałlong start = System.nanoTime(); ... (operacje na kolekcjach w wielkiej skali argumentów wejściowych) ... long end = System.nanoTime(); System.out.println("Tym razem zajęło: " + ((end - start) / 1000) + "ms." );
A upewnisz się że kod został skompilowany przez JIT ? co z Garbage Collectorem ? co z możliwymi optymalizacjami które JIT wykona ? przecież to jest tak niedeterministyczne ...
potem widzę takie benchmarki .. np: to https://benchmarksgame.alioth.debian.org/u64q/go.html - i jeszcze jakiś agent to potem pokazuje lol
Chcesz robisz benchmark ? naucz się środowiska.
witam , może ktoś mi wyjaśnic dlaczego po podzieleniu czasu w nanosekundach przez 1000 dostaje sie czas w milisekundach ?