Как измерить и записать время запуска приложения в App Center? - PullRequest
1 голос
/ 12 октября 2019

В настоящее время я занимаюсь разработкой приложения Xamarin.Android и хочу не только создавать приложение для каждого коммита, но и записывать время запуска (идея: если время запуска увеличивается, его легко определить из-за каких изменений).

Возможно ли это с помощью App Center? Может быть, использовать запуск теста App Center в сочетании с Application Insights? Я знаю, что Logcat отображает время запуска (время между запуском процесса и завершением рисования соответствующего действия), возможно, это можно извлечь с помощью Application Insights?

1 Ответ

0 голосов
/ 14 октября 2019

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

У вас будет что-то вроде этого:

protected override void OnCreate(Bundle savedInstanceState)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;
        base.OnCreate(savedInstanceState);

        var dictionary = new Dictionary<string, string>();
        var totalTime = 0L;
        var stopWatch = new Stopwatch();

        stopWatch.Start();
        UserDialogs.Init(() => this);
        stopWatch.Stop();
        totalTime += stopWatch.ElapsedMilliseconds;
        dictionary.Add("UserDialogs.Init(() => this); (ms)", stopWatch.ElapsedMilliseconds.ToString());

        stopWatch.Restart();
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        stopWatch.Stop();
        totalTime += stopWatch.ElapsedMilliseconds;
        dictionary.Add("global::Xamarin.Forms.Forms.Init(this, savedInstanceState); (ms)", stopWatch.ElapsedMilliseconds.ToString());

        stopWatch.Restart();
        LoadApplication(new App(new AndroidInitializer()));
        stopWatch.Stop();
        totalTime += stopWatch.ElapsedMilliseconds;
        dictionary.Add("LoadApplication(new App(new AndroidInitializer())) (ms)", stopWatch.ElapsedMilliseconds.ToString());

        dictionary.Add("Total Startup Time", totalTime.ToString());
        Analytics.TrackEvent("Load completed", dictionary);
    }
...