Первое, что я бы порекомендовал, это не тестировать отладочную сборку вашего приложения, пути кода среды выполнения Mono и Jit-кода не совпадают с сборкой выпуска, использованием общих сред выполнения, размеров сборки и т. д. и т. д. и т. д. будут влиять на время запуска и выполнения.
Вот примеры времени запуска «очень большого» агрессивно настроенного приложения на основе Android Forms на устройствах высокого и низкого уровня с использованием собственного эталонного теста (условно скомпилированного, а не внедренного и с использованием системных часов ОС).
Обзор приложения:
- Xamarin.Forms v2.4.0.269-pre2
- Сочетание закодированных и основанных на XAML страниц, элементов управления и т. д.
- Компилятор XAML включен
- "Splash screen" disabled
- A Theme-based splash on
MainActivity
will add:
- 200+ milliseconds to startup times on a fast device,
- 1-2 секунды на устройстве с медленным доступом к флэш-памяти
- Только не используйте заставку на основе Activity ;-)
- Мультидекс
- Proguard'd (агрессивно уменьшенные банки с помощью тестирования пользовательского интерфейса с циклом автоматической обратной связи)
- Linker (связать все, агрессивно уменьшенные размеры сборки с пользовательским файлом описания ссылки, созданным с помощью тестирования пользовательского интерфейса с автоматической обратной связью)
- На 100 % построено из исходного кода, что позволяет сворачивать пространства имен и сокращать количество сборок.
- Архитектура Viper без сторонних DI/IoC
- Дизайн с ленивой загрузкой с использованием данных, очередей приоритетов сети ресурсов и объявлений
- Живые объекты Realm и запросы, используемые для всех данных (минимальный размер БД: 250 МБ, максимальный размер 1,2 ГБ)
Время генерируется с помощью сценария оболочки, который перезагружает устройства, отслеживает запуск, ожидая, пока система установится, запускает ряд приложений (GApps, Facebook, Instagram, Twitter и т. д.), ожидает, пока система не установится, а затем запускает приложение Forms через:
export deviceTime=$(echo "$(adb -s $deviceID shell cat /proc/uptime | awk '{print $1}') * 1000" | bc -l)
adb -s $deviceID shell am start -n com.sushihangover.GeneticCancerDNAMapper/com.sushihangover.GeneticCancerDNAMapper.DevOpsDashboard --el startTime ${deviceTime%.*}
Устройство Google Pixel (на базе Oreo) (приложение можно использовать примерно через 430 мс):
I GeneticCancerDNAMapper: 0.162 : Xamarin.Forms.Platform.Android.FormsAppCompatActivity.OnCreate
I GeneticCancerDNAMapper: 0.164 : Xamarin.Forms.Platform.Android.FormsAppCompatActivity.base.SetTheme
I GeneticCancerDNAMapper: 0.201 : Xamarin.Forms.Platform.Android.FormsAppCompatActivity.base.OnCreate
I GeneticCancerDNAMapper: 0.244 : Xamarin.Forms.Forms.Init
I GeneticCancerDNAMapper: 0.266 : Realms.Realm.GetInstanceAsync ~Get Instance & Data~
I GeneticCancerDNAMapper: 0.324 : Realms.Realm.GetInstanceAsync ~Obtained Instance & Data~
I GeneticCancerDNAMapper: 0.324 : Xamarin.Forms.Application Content
I GeneticCancerDNAMapper: 0.349 : Xamarin.Forms.Application Content ~Creation Completed~
I GeneticCancerDNAMapper: 0.353 : Xamarin.Forms.Application.MainPage ~Displayed~
I GeneticCancerDNAMapper: 0.43 : Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication
Бюджетное устройство «Android One» 512 МБ с очень медленной флэш-памятью (приложение можно использовать примерно через 4,5 с):
Re: https://en.wikipedia.org/wiki/Android_One
I/GeneticCancerDNAMapper(10904): 2.453 : Xamarin.Forms.Platform.Android.FormsAppCompatActivity.OnCreate
I/GeneticCancerDNAMapper(10904): 2.467 : Xamarin.Forms.Platform.Android.FormsAppCompatActivity.base.SetTheme
I/GeneticCancerDNAMapper(10904): 2.731 : Xamarin.Forms.Platform.Android.FormsAppCompatActivity.base.OnCreate
I/GeneticCancerDNAMapper(10904): 3.016 : Xamarin.Forms.Forms.Init
I/GeneticCancerDNAMapper(10904): 3.166 : Realms.Realm.GetInstanceAsync ~Get Instance & Data~
I/GeneticCancerDNAMapper(10904): 3.571 : Realms.Realm.GetInstanceAsync ~Obtained Instance & Data~
I/GeneticCancerDNAMapper(10904): 3.571 : Xamarin.Forms.Application Content
I/GeneticCancerDNAMapper(10904): 3.772 : Xamarin.Forms.Application Content ~Creation Completed~
I/GeneticCancerDNAMapper(10904): 3.799 : Xamarin.Forms.Application.MainPage ~Displayed~
I/GeneticCancerDNAMapper(10904): 4.457 : Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication
person
SushiHangover
schedule
12.09.2017