Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Существуют ли какие -либо различия в производительности между связующим фактором и привязками швейцарского/тибета в mvvmcross


Существуют ли какие -либо различия в производительности между связующим фактором и привязками швейцарского/тибета в mvvmcross


В MVVMcross как для привязки, так и привязки швейцарского/тибета используются для связывания данных, но они различаются по своему подходу и использованию. Хотя нет явной информации о различиях в эффективности между этими двумя типами привязки, мы можем проанализировать их характеристики, чтобы понять потенциальные последствия:

Fluent Bindings

Плавные привязки представляют собой синтаксис на основе C#, который позволяет разработчикам создавать привязки в коде. Этот подход особенно полезен на таких платформах, как iOS и OSX, где файлы макета XML нелегко человеческому. Плавные привязки обеспечивают безопасный способ связывания свойств, который может помочь уменьшить ошибки времени выполнения, поймав несоответствие типа во время компиляции. Однако, поскольку они определены в коде, им может потребоваться больше накладных расходов с точки зрения обслуживания кода по сравнению с декларативными привязками, такими как швейцарский/Тибет.

Swiss/Tibet Bindings

Швейцарские и тибевые привязки являются декларативными, что означает, что они определены в форматах XML или строки. Эти привязки более краткие и могут быть легко встроены в файлы макета. В частности, синтаксис привязки Тибета предлагает более богатый язык экспрессии с такими функциями, как функциональный вызов преобразователя значений, мульти-связывание и простой синтаксис оператора. Этот декларативный подход может быть более эффективным с точки зрения читаемости и обслуживаемости кода, поскольку в файлах макета ясно видны привязки.

Соображения производительности

Несмотря на то, что нет конкретных данных о различиях в производительности между беглыми и швейцарскими/тибетскими привязками, следующие факторы могут повлиять на производительность:

-Разрешение времени компиляции против времени выполнения: в целом, привязки, которые разрешаются во время компиляции (например, некоторые аспекты беглых привязков из-за их защиты типа) могут обеспечить лучшую производительность по сравнению с разрешением времени выполнения. Тем не менее, привязки MVVMcross обычно разрешаются во время выполнения.

- Накладные расходы на размышления: как беглые, так и швейцарские/тибевые привязки, вероятно, используют отражение для разрешения имен свойств. Тем не менее, беглые привязки могут иметь небольшое преимущество из-за их безопасной природы, что потенциально снижает необходимость обширного отражения во время выполнения.

- Сложность экспрессии связывания: тибетские связки допускают более сложные выражения, что потенциально может ввести дополнительные накладные расходы из -за анализа и оценки этих выражений. Тем не менее, эта сложность также обеспечивает более мощные возможности привязки данных.

Таким образом, в то время как нет явных критериев производительности, сравнивающих беглые и швейцарские/тибевые привязки в MVVMcross, Fluent Bindings могут предложить небольшие преимущества из-за их безопасной природы и потенциального снижения отражения времени выполнения. Тем не менее, декларативный характер швейцарских/тиберов может улучшить читаемость кода и обслуживаемость, что может косвенно повлиять на эффективность разработки и общую производительность применения за счет снижения ошибок и улучшения качества кода. В конечном счете, выбор между этими методами связывания должен основываться на конкретных потребностях проекта, таких как сложность пользовательского интерфейса, нацеленная платформа, а также предпочтения для кода и декларативных привязков.

Цитаты:
[1] http://slodge.blogspot.com/2013/06/tibet-binding.html
[2] https://github.com/mvvmcross/mvvmcross/issues/1342
[3] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/compiled-bindings?view=net-maui-9.0
[4] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[5] https://stackoverflow.com/questions/46522577/mvvmcross-issues-with-fluent-связывание
[6] https://www.reddit.com/r/businessintelligence/comments/ky0dq9/is_it_a_best_practice_to_connect_with_views/
[7] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[9] https://www.mvvmcross.com/documentation/fundamentals/value-converters
[10] https://stackoverflow.com/questions/48422489/mvvmcross-tibet-binding-to-viewmodel-it