Преимущества дерева стека вызовов

Дерево стека вызовов предоставляет 3 замечательных преимущества:

  1. Один упрощенный вид
  2. Оптимизация производительности
  3. Точный тест дыма

Давайте обсудим их подробно в этой статье.

1. Один упрощенный вид
Дампы потоков — это снимки всех потоков, запущенных в приложении в данный момент. Дамп потока будет содержать сотни/тысячи потоков приложений. Было бы сложно прокрутить каждую строку трассировки стека в каждом отдельном потоке. Дерево стека вызовов объединяет все трассировки стека потоков в одно дерево и предоставляет единое представление. Это делает навигацию по дампам потоков намного проще и легче. Ниже приведен образец дерева стека вызовов, сгенерированный fastThread.io.

call-tree-1.png
Рис. 1. Дерево стека вызовов

Вы можете продолжить детализацию, чтобы увидеть путь выполнения кода. На рис. 2 показана развернутая версия конкретной ветви на диаграмме дерева стека вызовов.

дерево вызовов-2.png
Рис. 2. Развернутое дерево стека вызовов

Дерево стека вызовов показывает имя класса, имя метода и строку кода, которая была выполнена, а также количество потоков, которые выполнили строку кода.

элемент.png
Рис. 3. Один элемент из дерева стека вызовов

Из приведенного выше элемента в дереве стека вызовов вы можете определить, что метод call() в buggyCompanyCallable.java выполняется 9 потоками.

2. Оптимизация производительности
Методы, которые выполняются наибольшим количеством потоков, составляют критический путь кода вашего приложения. Дерево стека вызовов предоставляет вам статистику наиболее часто выполняемых методов вашего приложения. Мы заметили, что менее 5 % методов в вашем приложении в целом обеспечивают более 90 % выполнения кода. Таким образом, если вы сможете оптимизировать эти 5% методов, вы сможете значительно повысить производительность всего приложения. Это дает вам лучший ROI.

3. Набор для точного тестирования дыма
Когда вы пишете дымовые тесты, вы должны обязательно использовать наиболее важные методы приложения. Дерево стека вызовов показывает наиболее часто выполняемые методы вашего приложения. Таким образом, дерево стека вызовов облегчает вам написание узконаправленных модульных тестов для проверки критических методов и делает ваше приложение надежным для производственного развертывания. Такой точный набор тестов сокращает общее время выполнения теста. Это также может сократить время настройки тестовых данных в бэкэнд-системах. Вы также можете интегрировать эти тесты в конвейер CI/CD.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *