2013-07-01 7 views
1

Я пытаюсь разработать API для платформы Android для измерения производительности приложения. Например, для измерения приложения Android требуется следующее. Мне нужно предложение экспертаПроизводительность приложения для Android

  1. Сколько времени занимает приложение для входа? Войдите в систему через заднюю систему. Имя пользователя и пароль сохраняются на сервере базы данных, а приложение Android проверяет имя пользователя и пароль на сервере базы данных. Сколько времени занимает приложение для проверки? Одно общее решение для этого: время начала и окончания функции имени пользователя/проверки пароля, тогда (время окончания - время начала) даст фактическое время, в которое приложение должно было войти в систему. Любое другое предложение эксперта?

  2. Рассчитать время рендеринга, необходимое для полной загрузки всех этих компонентов пользовательского интерфейса (TextView, ImageView и т. Д.). ImageView будет загружаться с сервера. Требуется также предложение эксперта. Я могу применить # 1 тики здесь, но хотелось бы услышать от экспертов :)

Благодаря Арефин

ответ

2

Если вас беспокоит местное использование ЦП, то не используйте время настенных часов (то есть время, которое будет отображаться часами на стене). Android включает в себя Debug класс со статическим методом, threadCpuTimeNanos(), что было бы гораздо более подходящим для этой цели:

long startTime = Debug.threadCpuTimeNanos(); 
    // your computation goes here 
long endTime = Debug.threadCpuTimeNanos(); 

// If this comes out as 0, you probably don't need to worry about performance :-) 
long cpuTimeInMilliseconds = (endTime - startTime)/1000000; 
+0

Спасибо, @ Dan Breslau, ваша идея Awesome! – arefin

+0

Мне нужна еще одна информация, если вы знаете, позвольте мне сообщить. После установки apk в моем устройстве с помощью команды adb я хочу запустить приложение автоматически. Нет взаимодействия с пользователем, приложение будет запущено и перемещаться с одного экрана на другой.Но весь экран должен быть достигнут. Любая идея от вас? Заранее спасибо. – arefin

+0

Если я понимаю, что вы правы ... способ, которым я это сделаю, - создать второе приложение, которое используется только вами (или другими людьми, тестирующими ваше приложение), которое содержит список намерений, что ваш «настоящий», приложения. Это тестовое приложение периодически запускает один из Intents из списка, пока не достигнет конца списка, после чего он выйдет. У меня нет времени, чтобы предложить более подробную информацию; если вам нужно изучить это дальше, я бы предложил опубликовать новый вопрос. –

0

Я думаю (время окончания - время начала) является отличным решением. Нет смысла делать его более сложным, чем это ...

+0

Да, DORS, вы правы !. Благодарю. – arefin

2

Чтобы измерить производительность вашего приложения, это справедливый выбор для использования простой утилиты Stopwatch. Или вы также можете использовать стандартный инструмент, такой как Android traceview.

Однако, если вы хотите увидеть, как ваше приложение работает среди ваших пользователей, тогда решение, подобное New Relic, может оказаться очень удобным. Он позволяет измерять производительность вашего приложения для различных HTTP-запросов.

Наконец, чтобы отслеживать, как ваше приложение работает, когда дело доходит до рендеринга объектов, тогда лучше всего использовать собственный Android Hierarchy Viewer.

+0

Спасибо @ anirvan.Hierachy Viewer - это инструмент, который можно использовать в моем коде/API? Я думаю, я не могу это сделать. – arefin

+0

нет. даже если бы это было возможно (предполагая, что вы находите его источник), я не думаю, что сложность была бы полезной. Я обычно придерживался руководящих принципов, изложенных в этом разговоре о вводе/выводе - http://youtu.be/N6YdwzAvwOA, и производить измерения с помощью HierarchyViewer. Но я буду оглядываться и делиться тем, что может позволить это программным образом. – anirvan

0

Вы можете взглянуть на: https://firebase.google.com/docs/perf-mon/get-started-android?

Вы можете использовать пользовательские трассы для измерения производительности фрагмента кода (добавив Trace.start(), Trace.stop() вокруг этого кода) или использовать аннотацию @AddTrace для отслеживания определенных методов.

После включения Firebase производительность автоматически измеряет App время начала и сетевые запросы задержки, размер запроса/ответа и т.д.

Смежные вопросы