【问题标题】:Unticking "Use Shared Runtime" creates performance issues取消勾选“使用共享运行时”会产生性能问题
【发布时间】: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


【解决方案1】:

选中Use Shared Runtime 会选择高级窗口中Supported Architectures 选项中的所有架构。

取消选中它会删除除armeabi-v7a 之外的所有条目,这意味着不再选择x86。由于它现在在 x86 CPU 上运行 ARM 应用程序,因此会导致应用程序运行速度变慢。

确保在取消选中 Use Shared Runtime 后选中 x86 可在基于 x86 的设备上运行时提供所需的性能。

【讨论】:

    猜你喜欢
    • 2020-09-21
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多