【发布时间】:2019-01-05 00:52:54
【问题描述】:
我一直在调查我的 Xamarin Forms 应用程序在使用 Intel Atom CPU 的 Android 设备上运行时的性能调整。
我目前看到的最大性能是在加载 DataTemplate 以设置为 ContentView 的内容时,此 DataTemplate 然后动态加载其中的其他控件和 DataTemplate 以生成应用程序的 UI。
从已签名的 APK 存档在此设备上运行,我看到从点击屏幕到完成加载完整 UI 所需的时间为 3.9 秒。
但是,如果我从 Visual Studio 部署应用程序,然后在没有附加调试器的设备上运行它,同样的过程会下降到大约 1.5 秒。
它似乎是由项目属性中的“使用共享运行时”选项可靠地触发的。勾选此选项后,我始终看到此过程大约需要 1.5 秒,而取消勾选则最多约为 3.9 秒。无论应用程序是在调试模式还是发布模式下构建,也无论项目属性中的其他设置如何,这都是相同的。
这个特定场景是性能最差的部分,但是我看到所有 UI 加载/布局过程都以相似的比例改进,显示另一个视图从 1.5 秒下降到 0.8 秒等等。
由于我无法在选中此设置的情况下创建存档,是什么导致了这种性能变化?如何在未选中此设置的情况下复制此性能?
我正在运行 Xamarin.Forms 3.4.0.1008975、VS2017 15.9.4 和 Xamarin.Android 9.1.4.2
【问题讨论】:
-
将您的应用配置为
Release配置,因为这是您的最终产品。Shared Runtime不是您在Release中使用的东西,并且会从这个等式中删除,因为它主要用于更快的开发。 developer.android.com/topic/performance/vitals/launch-time 如果您正在分析自己的 UI 项,请使用一些日志记录语句打印出时间。 -
我知道它不会在 Release 中使用,但是启用它会对我正在尝试调查的应用程序的性能产生巨大影响。我想了解两者之间有什么不同,为什么启用共享运行时会带来更好的性能,以及我可以做些什么来禁用它。它旨在缩短部署时间,而不是改变行为。
标签: xamarin xamarin.forms xamarin.android