Поиск по сайту:

Автоматизируйте проверки производительности кода с помощью AWS CodeGuru


CodeGuru — это сервис от AWS, который может автоматически анализировать ваш код на наличие распространенных проблем с производительностью и других ошибок, таких как условия гонки и утечки памяти. Если вы платите за сервер, на котором он работает, потраченное впустую процессорное время — это потраченные впустую деньги.

Что делает CodeGuru?

По сути, CodeGuru — это алгоритм машинного обучения, обученный и настроенный для предоставления рекомендаций по повышению производительности ваших приложений. CodeGuru сканирует вашу кодовую базу, чтобы найти проблемные строки кода, которые можно оптимизировать, чтобы предотвратить ненужные циклы ЦП. Эта функция называется CodeGuru Profiler.

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

Конечно, CodeGuru не предназначен для полной замены проверки кода людьми и не предназначен для тестирования пользовательского интерфейса в любой форме. Тем не менее, он уловит то, что люди могут пропустить, и может выполнять автоматическое тестирование в каждой области вашего приложения.

CodeGuru, как и большинство AWS, имеет оплату по мере использования и достаточно низок, чтобы запускать его для каждой проверки кода. По оценкам AWS, для типичного запроса на включение с 500 строками кода запуск CodeGuru Reviewer будет стоить всего 3,75 доллара США. Очевидно, что это будет складываться в зависимости от того, сколько у вас запросов на вытягивание, но за то, что он предлагает, и за потенциальную экономию вычислений, CodeGuru окупит себя для многих людей.

К сожалению, в настоящее время CodeGuru поддерживает только приложения Java. Однако в ближайшее время планируется поддержка большего количества языков, и в основном это будет работать так же. Если вы будете читать это в будущем, вы можете проверить их веб-сайт, чтобы узнать, какие языки поддерживаются.

Использование профилировщика

Перейдите в консоль управления CodeGuru и выберите «Группы профилирования» на боковой панели. Вы можете создать свою собственную здесь, но уже есть две группы, которые вы можете изучить, чтобы увидеть, как это работает. Мы откроем один «С проблемами», чтобы посмотреть.

На главном экране вы увидите график всего времени, которое ЦП тратит на выполнение различных функций. Плоские вершины — это области, в которых ЦП выполняет работу в конкретной функции, а не тратится на вызов других методов.

Например, по сравнению с другим демо-репозиторием без проблем, код работает быстрее и тратит больше времени на выполнение работы.

Если вы нажмете кнопку «Рекомендации», вам будет представлен список найденных CodeGuru вещей, которые можно оптимизировать. Например, в демо с проблемами 10 % времени было потрачено на создание ObjectMappers, которые создаются медленно и в результате должны создаваться только один раз. CodeGuru рекомендует инициализировать это как статическую переменную, чтобы решить эту проблему.

CodeGuru сообщит вам, какие функции содержат проблемный код, чтобы вы могли сузить круг проблемы и быстро приступить к ее устранению.

Что касается тестирования собственных приложений, то это довольно просто. Создайте новую группу профилирования, и вам будут даны инструкции о том, как интегрировать профилировщик в ваше приложение, либо запустив JVM со специальным параметром -javaagent , либо интегрировав его непосредственно в ваше приложение. .

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

Для рецензента кода, который дает рекомендации по неэффективности, вам просто нужно связать свой репозиторий с CodeGuru в разделе «Связанные репозитории». После этого вы увидите код-ревью для каждого пулл-реквеста.