Я хочу сделать некоторые оценки производительности (в основном время выполнения) для моего Java-кода, однопоточного, локального и сложного алгоритма. (Поэтому я не хочу, чтобы макро-бенчмарк измерял реализацию JVM.)
С помощью инструмента я хотел бы
- проанализировать сложность, т.е. посмотреть, как мой код масштабируется для параметра n (глубина поиска). (У меня уже есть junit-тест, параметризованный в n.)
- выполните некоторые анализ тенденций, чтобы получить предупреждение, если какое-то изменение базы кода делает код более медленным.
Для этого я хотел бы использовать инструмент или фреймворк, который
- содержит статистику, оптимально вычисляя среднее значение, стандартное отклонение и доверительные интервалы. Это очень важно.
- может быть параметризован (см. параметр n выше). Это также очень важно.
- способен создавать фантастический сюжет, было бы неплохо, но не обязательно
- может использоваться в автоматическом (junit-) тесте, чтобы предупредить меня, если моя программа замедляется, но это также не требуется, просто плюс.
Какие инструменты/рамки отвечают этим требованиям? Какой из них хорошо подходит для анализа сложности и тренда, и почему?