Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross中瑞士/西藏结合表达式的表现如何与瑞士/西藏结合表达式相比


MVVMCross中瑞士/西藏结合表达式的表现如何与瑞士/西藏结合表达式相比


在比较MVVMCross中流利的结合与瑞士/西藏结合表达式的性能时,有几个因素会发挥作用。这是一个详细的故障:

##绑定类型概述

- 流利的绑定:这些是C#代码中创建的类型安全绑定表达式。它们在iOS和UWP等平台上特别有用,XML布局文件不容易编辑。流利的绑定提供了一种清晰,强大的方法来绑定视图属性以查看模型属性,这可以通过在编译时捕获类型不匹配来减少运行时错误[1] [4]。

- 瑞士/西藏结合表达式:这些是基于字符串的绑定表达式,通常在XML布局文件(例如Android的Axml)中使用。瑞士绑定更灵活,允许串联和条件逻辑等复杂表达式。西藏结合通过支持更先进的语法来扩展这一点,类似于结合表达式的小语法[1] [6]。

##性能比较

###编译时间与运行时评估

- 流利的结合:由于在C#中定义了流利的结合,因此在编译时进行评估。这意味着任何类型的错误或具有约束力的问题都会早日捕获,可能会提高发展效率。但是,运行时的实际性能通常类似于其他绑定方法,因为在运行时仍执行绑定设置。

- 瑞士/西藏绑定:这些绑定在运行时进行评估,因为它们被定义为XML文件中的字符串。这意味着只有在应用程序运行时才会发现绑定表达式中的任何错误,如果未正确测试,这可能会导致开发周期较慢。但是,一旦设置绑定,运行时评估就不会固有地使其比流利的绑定慢。

###运行时开销

- 流利的绑定:Fluent绑定的开销很小,因为它们直接在代码中创建必要的绑定对象。这种直接方法可能比在运行时解析字符串表达式要高一些。

- 瑞士/西藏结合:这些需要在运行时解析XML的结合表达式,这与流利的结合相比引入了一些高架。但是,除非处理非常复杂或众多绑定,否则该开销通常很小。

###开发效率和错误处理

- 流利的绑定:由于编译时间检查而提供更好的开发效率,这可以通过减少调试运行时约束问题所花费的时间间接提高性能。

- 瑞士/西藏装订:虽然对于复杂表达式而言,它们更灵活,但它们需要更多的运行时检查,并且如果未正确测试,则可能导致较慢的开发。

## 结论

在原始性能方面,一旦设置,Fluent和瑞士/西藏的结合通常都是可比的。但是,流利的绑定提供了开发效率和编译时间误差检测的优势,可以通过减少调试时间间接提高整体应用性能。瑞士/西藏装订在复杂的方案中提供了更大的灵活性,但需要更多的运行时检查。它们之间的选择通常取决于项目的特定需求以及开发人员对基于代码的基于XML的绑定定义的偏爱。

引用:
[1] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[2] https://stackoverflow.com/questions/46522577/mvvmcross-sissues-with-fluent-binding
[3] https://stackoverflow.com/questions/48422489/mvvmcross-tibet-binding-to-viewmodel-infly
[4] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[5] https://www.youtube.com/watch?v=3-ct97sbmxm
[6] https://stackoverflow.com/questions/48824612
[7] https://github.com/mvvmcross/mvvmcross/issues/1342
[8] https://github.com/mvvmcross/mvvmcross
[9] https://www.mvvmcross.com/documentation/fundamentals/value-converters
[10] https://stackoverflow.com/questions/48066268/xamarin-mvvmcross-fluent-binding-on-uwp
[11] https://crosscuttingconcerns.com/mvvmcross-fluent-databinding