Внезапно поднялась тема про профилирование java.
Предыстория тут: http://www.owen.ru/forum/showthread....l=1#post194543
Краткий перессказ тут: http://shipilev.net/blog/2015/voltmeter/
jmh: http://openjdk.java.net/projects/code-tools/jmh/
Да. Без jmh замеры невозможны.
Именно. Темой "StringBuilder vs StringBuffer" не тыкайте, пожалуйста.
TON'ом, PID'ом или ещё чем -- совсем другой вопрос.
Нет, не намекаю.
Мои слова: "замер без jmh -- порнография". Остальное не обсуждалось и не подразумевалось. Да, я тоже за код без жёлтых подчёркиваний.
Но вот замерять что-то без JMH -- извольте.
Профилировщик -- хорошо. Но сначала нужно тест на JMH, а потом уже профилировать.
Обратный порядок неверен.
Вот видите, это подтверждает то, что конкретный бенчмарк упирается не только в код классов Buffer/Builder, но и в сборку мусора.
Нет, тут всё синхронно и ровно в один поток.
@Fork(3) заставляет jmh выполнять тест 3 раза. При этом для каждого теста java машина запускается 3 раза.
Это нужно для того, чтобы исключить случаи, когда "от запуска к запуску самой java машины" меняется результат. Такое бывает.
Если посмотрите логи, выполнений, то там видно, что каждый из тестов запускался 3*10*2=60 раз.
1-ый запуск jvm: 10 прогревочных запусков (они отбрасываются), 10 измерительных (по ним усредняем)
2-ый запуск jvm: 10 прогревочных запусков (они отбрасываются), 10 измерительных (по ним усредняем)
3-ий запуск jvm: 10 прогревочных запусков (они отбрасываются), 10 измерительных (по ним усредняем)
Т.е. итоговый результат -- усреднение по 30 запускам.