В вашем распоряжении есть java профилировщики с открытым исходным кодом , а также другие, которые могут стоить денег, например YourKit . Вы должны запускать тесты как с существующим кодом, так и с вашим расширенным кодом. Работа с ThreadLocals в целом должна снизить конкуренцию, но учтите, что перед началом оптимизации также полезно провести сравнительный анализ.
Еще один довольно простой тест, который можно выполнить без настройки какого-либо профилировщика, - это сделать несколько дампов потоков (ctrl-break или kill -QUIT), пока приложение работает медленно. Обнаружение нескольких потоков, ожидающих на одинаковых или одинаковых мониторах в течение короткого промежутка времени, может довольно четко указать на медленные точки. Вы можете использовать инструменты, такие как TDA , анализатор дампа потока Java, чтобы помочь вам прочесать дамп потока.
Опять же, выполнение этой работы до начала оптимизации - хорошая идея. Это объясняется тем, что, хотя могут быть некоторые очевидные места, где оптимизации могут иметь значение, фактическое поведение пользователя может инициировать пути, которые разработчик не учитывает, и они могут оказаться реальными проблемными областями.