Pull to refresh

Comments 9

Скорость работы приложений важна.

Донесите эту мысль до команды Yandex Go, пожалуйста. 4 секунды смотреть на загрузочный экран - так себе удовольствие.

Сначала подумал, что вы преувеличиваете, но открыл Яндекс Go и да, реально так оно и есть. Причём устройство далеко не слабое, один из прошлых флагманов на снэпе 865.

Написал ребятам. Надеюсь у них получится запланировать работы

Вижу, что уже поработали. Теперь 6 секунд на загрузку.

Почему macrobemchmark не рассматриваете? Он для этих кейсов подходит идеально же.

Не пробовали такое решение.

Это, я так понимаю, в качестве альтернативы Timeline.

Мы используем Timeline и в проде, чтобы пользователи, у кого есть доступ к меню разработчика, могли делиться таймлайнами с внутренней информацией о запросах и т.п.

Для прода Macrobenchmark не особо подходит.

Но для своих кейсов - норм.

Да, если вы хотите смотреть прям в проде не вариант, но вроде firebase performance что-то такое может собирать, но сам не щупал, точно не скажу.

Macrobemchmark позволяет локально на физ устройстве прогонять тесты по нужным кейсам, смотреть время старта, медленные кадры и прочее - что Android vitals отслеживает.

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

Используется аспектно-ориентированное программировние. Статья1 и статья2.

И такой код для того, чтобы замерить время выполнения создания инстанса через Dagger2.

@Aspect
public final class InjectedConstructorAspect extends AspectJExtension {

    @Pointcut("call(@javax.inject.Inject *.new(..))")
    public void injectConstructor() {
        // Выбираем вызовы конструкторов с аннотацией @Inject
    }

    @SuppressWarnings("UnknownNullness")
    @Around("injectConstructor()")
    public Object proceedAndMeasure(@NonNull final ProceedingJoinPoint joinPoint) throws Throwable {
        final long start = currentMillis();
        final Object result = joinPoint.proceed();
        final long stop = currentMillis();
        DiagnosticEventDispatcher.injectedConstructorExecutedEvent(
                start, stop,
                result.getClass()
        );
        return result;
    }

}

Также есть экстеншены для того, чтобы замерять время создания объектов, которые не создаются через Dagger2:

  • Activity

  • Fragment

  • Presenter (Если создаётся через аннотацию Moxy @ProvidePresenter)

Тулза работает только у разработчика, то есть в проде нет ни следа от неё. Включается только через специальный тип сборки, так как развешивать и выполнять join'ы - не бесплатно.

Ну и есть экран, в котором отображаются результаты, полученные в DiagnosticEventDispatcher

Отображается время создания инстанса (в персентиле) и количество созданных объектов конкретного класса.

Sign up to leave a comment.