Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
… вы убъете кучу времени в нем разбираясь. Инструменты надо учиться, а делать что-то самому, конечно, намного приятней…— следуя вашей логике так и Java неинтересно, лучше свой язык написать.
Единственный реальный выход — это использовать нативный код, для x86 процессора есть такая замечательная инструкция rdtsc, которая возращает счетчик количества тактов процессора. Напрямую к ней доступа нет, можно написать на C однострочный метод, который вызывает «rdtsc», а дальше слинковать его с Java-кодом, и вызывать из Java. Этот вызов вам займет сто тактов
relgames@oleg:~/myprojects/ClockTest$ java -jar target/clocktest-1.0-SNAPSHOT-jar-with-dependencies.jar --trials 5
0% Scenario{vm=java, trial=0, benchmark=CurrentTimeMillis} 0,66 ns; σ=0,02 ns @ 10 trials
10% Scenario{vm=java, trial=1, benchmark=CurrentTimeMillis} 0,67 ns; σ=0,01 ns @ 10 trials
20% Scenario{vm=java, trial=2, benchmark=CurrentTimeMillis} 0,66 ns; σ=0,00 ns @ 3 trials
30% Scenario{vm=java, trial=3, benchmark=CurrentTimeMillis} 0,67 ns; σ=0,01 ns @ 10 trials
40% Scenario{vm=java, trial=4, benchmark=CurrentTimeMillis} 0,67 ns; σ=0,01 ns @ 10 trials
50% Scenario{vm=java, trial=0, benchmark=NanoTime} 0,66 ns; σ=0,01 ns @ 10 trials
60% Scenario{vm=java, trial=1, benchmark=NanoTime} 0,67 ns; σ=0,01 ns @ 10 trials
70% Scenario{vm=java, trial=2, benchmark=NanoTime} 0,67 ns; σ=0,01 ns @ 10 trials
80% Scenario{vm=java, trial=3, benchmark=NanoTime} 0,68 ns; σ=0,01 ns @ 10 trials
90% Scenario{vm=java, trial=4, benchmark=NanoTime} 0,68 ns; σ=0,01 ns @ 10 trials
benchmark trial ns linear runtime
CurrentTimeMillis 0 0,664 =============================
CurrentTimeMillis 1 0,669 =============================
CurrentTimeMillis 2 0,656 ============================
CurrentTimeMillis 3 0,665 =============================
CurrentTimeMillis 4 0,667 =============================
NanoTime 0 0,665 =============================
NanoTime 1 0,674 =============================
NanoTime 2 0,674 =============================
NanoTime 3 0,680 ==============================
NanoTime 4 0,676 =============================
0% Scenario{vm=java, trial=0, benchmark=CurrentTimeMillis} 500,36 ns; σ=0,42 ns @ 3 trials
10% Scenario{vm=java, trial=1, benchmark=CurrentTimeMillis} 509,32 ns; σ=4,70 ns @ 5 trials
20% Scenario{vm=java, trial=2, benchmark=CurrentTimeMillis} 500,87 ns; σ=0,76 ns @ 3 trials
30% Scenario{vm=java, trial=3, benchmark=CurrentTimeMillis} 496,79 ns; σ=2,31 ns @ 3 trials
40% Scenario{vm=java, trial=4, benchmark=CurrentTimeMillis} 501,60 ns; σ=3,01 ns @ 3 trials
50% Scenario{vm=java, trial=0, benchmark=NanoTime} 505,25 ns; σ=4,90 ns @ 3 trials
60% Scenario{vm=java, trial=1, benchmark=NanoTime} 513,66 ns; σ=4,92 ns @ 3 trials
70% Scenario{vm=java, trial=2, benchmark=NanoTime} 518,22 ns; σ=6,33 ns @ 10 trials
80% Scenario{vm=java, trial=3, benchmark=NanoTime} 507,69 ns; σ=5,77 ns @ 10 trials
90% Scenario{vm=java, trial=4, benchmark=NanoTime} 510,61 ns; σ=2,24 ns @ 3 trials
benchmark trial ns linear runtime
CurrentTimeMillis 0 500 ============================
CurrentTimeMillis 1 509 =============================
CurrentTimeMillis 2 501 ============================
CurrentTimeMillis 3 497 ============================
CurrentTimeMillis 4 502 =============================
NanoTime 0 505 =============================
NanoTime 1 514 =============================
NanoTime 2 518 ==============================
NanoTime 3 508 =============================
NanoTime 4 511 =============================
Инструменты надо учиться, а делать что-то самому, конечно, намного приятней.Обычно это основной аргумент у разработчиков для разработки нового велосипеда)
Do It Yourself Java Profiling