Тестирование программ Java

В университете я выполняю модификации байт-кода и анализирую их влияние на производительность программ Java. Поэтому мне нужны программы на Java - в лучшем случае используемые в производстве - и соответствующие тесты. Например, у меня уже есть HyperSQL, и я измеряю его производительность с помощью тестовой программы PolePosition. Программы Java, работающие на JVM без JIT-компилятора. Спасибо за вашу помощь!

P.S .: Я не могу использовать программы для оценки производительности JVM или самого языка Java (например, Wide Finder).


person s106mo    schedule 03.01.2011    source источник
comment
Не совсем понятно, что ты хочешь делать. Вы можете объяснить это немного подробнее?   -  person Riduidel    schedule 03.01.2011
comment
байтовый код обычно не оптимизируется, вместо этого JIT оптимизирует собственный код, который он создает. Таким образом, вы можете обнаружить, что изменение байт-кода не улучшит производительность так, как вы могли бы ожидать, поскольку вы зависите от того, как он превращается в собственный код.   -  person Peter Lawrey    schedule 03.01.2011
comment
@ Питер, я думаю, он ищет сценарии, которые дают наилучшую производительность   -  person UVM    schedule 03.01.2011
comment
@UNNI, вероятно, JIT оптимизирует определенные ожидаемые шаблоны. изменение кода на то, что выглядит более оптимальным, может запутать JIT и привести к неоптимальному коду. Я не верю, что есть какие-либо тривиальные изменения байтового кода, которые приведут к значительному повышению производительности. Однако могут произойти более сложные изменения, и их стоит изучить.   -  person Peter Lawrey    schedule 03.01.2011
comment
@Peter, я видел инструмент тестирования производительности в java под названием JBenchmark. Но пока не использовался, как это работает. Как вы сказали, немного сложно оптимизировать JIT таким образом, чтобы получить значительное улучшение производительности. Btw, есть ли какой-либо шаблон JIT для что как вы упомянули?   -  person UVM    schedule 03.01.2011


Ответы (3)


Брент Бойер написал серию хороших статей для разработчиков IBM: Надежный бенчмаркинг Java, который сопровождается структурой микробенчмаркинга, основанной на надежном статистическом подходе. Статья и Страница ресурсов.

Поскольку вы делаете это для университета, вас могут заинтересовать Энди Джорджес, Дрис Байтаерт, Ливен Экхаут : Статистически строгая оценка производительности Java в OOPSLA 2007.

person jmg    schedule 21.01.2011

Caliper - это инструмент, предоставляемый Google для микротестирования. Он предоставит вам графики и все такое. Люди, создавшие этот инструмент, хорошо знакомы с принципом «Преждевременная оптимизация - корень всех зол» (с точки зрения юнтинга) и очень осторожны в объяснении роли сравнительного анализа.

person Ray    schedule 21.01.2011

Любой опытный программист скажет вам, что преждевременная оптимизация хуже, чем ее отсутствие. В лучшем случае это пустая трата ресурсов, а в худшем - источник бесконечных будущих (и текущих) проблем.

Без контекста любое приложение, даже с журналами тестов, ничего вам не скажет. У меня может быть цикл, на выполнение которого уходит 10 часов, тест покажет, что он длится почти вечно, но меня это не волнует, потому что это не критично для производительности. Другой цикл занимает всего миллисекунду, но это может быть слишком долго, потому что из-за этого я не могу поймать входящие пакеты данных, поступающие с интервалами в 100 микросекунд.

Две крайности, но обе могут случиться (даже в одном приложении), и вы никогда не узнаете, если бы не знали это приложение, как оно используется, что оно делает, при каких условиях и требованиях.

Если на рендеринг пользовательского интерфейса уходит полсекунды, это может быть слишком долго или без проблем, каков контекст? Каковы ожидания пользователей?

person jwenting    schedule 13.01.2011