Установка
mvn clean install
Задание
- Запустить программу командой java -jar <путь до скомпилированной shaded jar'ки>
- Запустить скрипт run_tests.py
- С помощью jvisualvm подключиться к работающей программе и проанализировать метрики.
На каждом этапе выполнения задания, собирайте следующую информацию:
- на сколько загружен CPU
- сколько в среднем потребляется памяти, заметен ли в программе memory leak
- как часто происходит сборка мусора
- сколько в среднем выполняется запуск сценария 1, как быстро увеличивается это время
- какие операции из значимых (т.е. без учета работы системных функций, в т.ч. веб сервера) занимают больше всего процессорного времени
- на основе этой информации решите, что в коде можно оптимизировать, и кратко обоснуйте свое решение
- проведите оптимизацию и повторите сбор информации
Также можете провести свои оптизации в коде, даже если не видите для этого формацльных метрик в jvisualvm.
Для финальной версии программы сделайте Pull Request на github'е, в названии пулл реквеста напишите ваше имя, а в комментариях к пулл реквесту напишите ваш анализ
После того как вы исправите все найденные баги, проведите дополнительные эксперименты:
- попробуйте использовать разные GC и сравните как они себя ведут в плане потребления ресурсов, опишите найденные вами различия и выберите по вашему мнению подходящий GC для этого приложения
- полностью перепишите AccountDAOImpl и UserDAOImpl избавившись от базы данных, и реализовав все функции на основе HashMap и других структур, которые будут работать наиболее эффективно для тестового сценария 1. Получилось ли увеличить производительность программы?