Upload
ontico
View
111
Download
6
Embed Size (px)
Citation preview
П ОЛ Ь З О В АТ Е Л Ь ТО Ч Н О О Ц Е Н И Т!
Повышение производительности мобильных приложений
Руслан Трошков, старший разработчик мобильных приложений[email protected]
Traceview
Calls + Recur Calls / Total количество вызовов + рекурсивные вызовы
CPU Time / Call Время, потраченное на вызов метода
Real time / Call Реальное время для каждого вызова метода приложения
@Around("(anyMethod())")public Object weaveJoinPoint(ProceedingJoinPoint joinPoint) throws Throwable { . . . MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature(); String className = methodSignature.getDeclaringType().getSimpleName(); String methodName = methodSignature.getName(); StopWatch stopWatch = new StopWatch();
stopWatch.start(); result = joinPoint.proceed(); stopWatch.stop();
long time = stopWatch.getTotalTimeMillis(); Log.d(TAG_METHOD_PROFILE, buildLogMessage(className+"."+methodName, time));
. . .
return result;}
D/methodProfile: Время выполнения --> BaseModel.setState --> [5ms]
D/methodProfile: Время выполнения --> ObserverWrapperFragment.update --> [2ms]
D/methodProfile: Время выполнения --> BaseModel.setStateWithLabel --> [3ms]
D/methodProfile: Время выполнения --> SaveObjectHelper.saveData --> [4ms]
D/methodProfile: Время выполнения --> SaveObjectHelper.saveAuthType --> [4ms]
D/methodProfile: Время выполнения --> Auth.saveAuthData --> [11ms] <------------Achtung!!! -----------
CPU GPU
Иерархия представления: Большая вложенностьСлишком много элементов
Перерисовка ( Overdraw )
RelativeLayout — 2
LinearLayout + weight — 2
LinearLayout — 1
FrameLayout — 1
. . .<ViewStub android:id="@+id/warningContainerViewStub" android:layout_width="match_parent" android:layout_height="wrap_content" android:inflatedId="@+id/warningContainerInflateOverlay" android:layout="@layout/view_stub_warning_container"/>
. . .
Убираем лишний background
?
public class VacancyRecyclerAdapter extends HeaderRecyclerViewAdapter implements Observer{
public static final int ID_PANEL_ADD_SUBSCRIPTION = -100; public static final int ID_HEADER_NEW_VACANCY = -101; public static final int ID_HEADER_OLD_VACANCY = -102; . . .
@Override public int getItemViewType(int position) { VacanciesType.VacancyType vacancyType = getItem(position); return vacancyType.id; }
. . .}
vacancyType.id — уникальное значение
61416
60000120
Sizeof Shallow Size559
500
18834092
18806820
Heap Count Retained Size
VacancyRecyclerAdapterSVacancyRecyclerViewHolder
559
500(ru.superjob.client.android.adapters)
adaptersClass Name Total Count
Heap Dump
. . .
LeakCanary