【问题标题】:Performance: Binding vs code-behind性能:绑定与代码隐藏
【发布时间】:2021-05-26 07:22:21
【问题描述】:

我想提高我的 Xamarin.Forms 应用程序的性能(基于 MVVM 模式)。现在,我已经从 viewmodel 绑定到我的所有静态标签。

查看 (XAML):

<Label Text="{Binding Text}" />

视图模型:

public string Text => CustomResourceManager.Current.Get(nameof(UserInterface.Text));

我想知道将其更改为这样的内容是否会更快。

查看 (XAML):

<Label x:Name="TextLabel" />

代码隐藏:

public MyView()
{
    InitializeComponent();
    TextLabel.Text = CustomResourceManager.Current.Get(nameof(UserInterface.Text));
}

您有任何经验或验证我的重构想法的更简单方法吗?

【问题讨论】:

  • 第二种方法“开销比绑定少”(来自here)。但真正的问题是你有性能问题吗?我没有 xamarin 方面的专业知识,但在 wpf 中,如果所有标签文本都以类似方式检索,您可以轻松创建 custom markup extension 以减少代码量。
  • 我知道这样的东西更快:Button.Text = "Accept",但在我的情况下,我必须从我的 CustomResourceManager 获取它并从代码隐藏中设置。我假设从 CustomResourceManager 获取字符串的时间是 const 并且不依赖于 MVVM 或代码隐藏。我正在寻找一种提高性能的方法,因为我的应用中的视图很复杂,甚至 50 毫秒,同时渲染会增加用户的感受。
  • 您是否已经确定了瓶颈?如果没有,请使用分析器。我怀疑像上面这样的简单绑定会很重要,认为每个人都必须ask his performance question
  • “我想知道把它改成这样会不会更快。” -- there's only one way to find out

标签: c# performance xamarin xamarin.forms mvvm


【解决方案1】:

我认为这不太相关,因为所有组件都将使用 Binding 来处理你自己没有设置的所有值,框架总是会比你的代码更多地使用 Binding

【讨论】:

    猜你喜欢
    • 2011-07-16
    • 2013-10-17
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多