У меня была такая же проблема, и я решил исследовать решение, потому что думал, что оно не может быть слишком сложным.Мальчик, я был не прав.
Мой первоначальный ответ, который так и не был опубликован, содержал некоторую неловкую игру с Thread.sleep
и ручными таймингами и нажатием правой кнопки в нужное время.Это было заменено более элегантным решением, использующим API отладки из кода.
Используя Android Studio 3.1.3, это были мои шаги:
Мне пришлось скопироватьмой реальный модульный тест в androidTest (потому что я действительно интересовался алгоритмической сложностью (а не расходом времени), я не нашел способа фактически профилировать в Android Studio без эмулятора. Для тестов производительности это имеет смысл, но в моем случае я хотелчтобы гарантировать, что даже в сложных сценариях мои методы ведут себя предсказуемо.)
Чтобы избежать необходимости возиться с Thread.sleep
и выводом журнала, указывающим начало / остановкуВы можете использовать комбинации Debug.startMethodTracing("File"); or Debug.startMethodTracingSampling() and Debug.stopMethodTracing();
или аналогичные (см. https://developer.android.com/studio/profile/generate-trace-logs). Мой код теперь выглядит как
@Test
public void Test_Something() throws Exception
{
Debug.startMethodTracing("Predict");
// DO YOUR CODE
Debug.stopMethodTracing();
}
Когда я сейчас заполняю профиль, я могу получить .traceгенерируется в указанном месте на устройстве, как указано в ссылке выше:
(еще раз прочитайте связанную страницу, потому чтоДля этого вам понадобится разрешение WRITE_EXTERNAL_STORAGE
, которое уже было у моего приложения, так что в моем случае это не было большой проблемой.
- Двойной щелчок по трассировке открывает ее в Android Studio.В отличие от указанной выше ссылки, в настоящее время я не могу импортировать такую трассировку в профилировщик, потому что либо в 3.1.3 отсутствует эта функция, либо я не могу ее найти.
Редактировать : После обновления до Android Studio 3.2 теперь я могу действительно загружать и сохранять сеансы и отображать их в Профилировщике.Это значительно улучшилось.И интересный факт: когда я открыл трассировку в Android Studio 3.1.3, я увидел количество обращений к методам (как часто они вызывались), а не их часы.С другой стороны, в профилировщике я не смог найти время звонка, но вместо этого у меня был доступ ко времени настенных часов.Было бы замечательно, если бы у кого-то была подсказка, как их отображать.