Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Czy istnieją jakiekolwiek różnice wydajności między wiązaniami płynnymi a wiązaniami szwajcarskiej/tybetu w MVVMCROSS


Czy istnieją jakiekolwiek różnice wydajności między wiązaniami płynnymi a wiązaniami szwajcarskiej/tybetu w MVVMCROSS


W MVVMCROSS zarówno wiązania płynne, jak i szwajcarskie/tybetu są wykorzystywane do wiązania danych, ale różnią się pod względem podejścia i użycia. Chociaż nie ma wyraźnych informacji na temat różnic wydajności między tymi dwoma rodzajami powiązań, możemy przeanalizować ich cechy, aby zrozumieć potencjalne implikacje:

Płynne wiązania

Płynne powiązania to składnia oparta na C#, która pozwala programistom tworzyć powiązania w kodzie. Takie podejście jest szczególnie przydatne na platformach takich jak iOS i OSX, gdzie pliki układu XML nie są łatwo edytowane przez człowieka. Płynne wiązania stanowią bezpieczny typ typu właściwości, co może pomóc w zmniejszeniu błędów w czasie wykonywania, łapiąc niedopasowania typu w czasie kompilacji. Ponieważ jednak są one zdefiniowane w kodzie, mogą wymagać więcej kosztów ogólnych pod względem konserwacji kodu w porównaniu z deklaratywnymi powiązaniami, takimi jak Swiss/Tybet.

Szwajcarskie/Tybetu wiązania

Wiązania szwajcarskie i tybetu są deklaratywne, co oznacza, że ​​są one zdefiniowane w formatach XML lub String. Te powiązania są bardziej zwięzłe i można je łatwo osadzić w plikach układu. W szczególności składnia wiązania Tybetu oferuje bogatszy język wyrażenia z funkcjami takimi jak wywołanie konwertera wartości podobnych do funkcji, wielozadaniowe i prosta składnia operatora. To deklaratywne podejście może być bardziej wydajne pod względem czytelności kodu i zachowania, ponieważ powiązania są wyraźnie widoczne w plikach układu.

Rozważania dotyczące wydajności

Chociaż nie ma specyficznych danych na temat różnic wydajności między wiązaniami płynnymi i szwajcarskimi/tybetowymi, następujące czynniki mogą wpłynąć na wydajność:

-Rozdzielczość czasu kompilacji a rozdzielczość środowiska wykonawczego: Ogólnie rzecz biorąc, wiązania, które są rozwiązywane w czasie kompilacji (podobnie jak niektóre aspekty płynnych wiązań ze względu na ich charakter bezpieczny typu) mogą zapewnić lepszą wydajność w porównaniu z rozdzielczością czasu wykonawczego. Jednak wiązania MVVMCROSS są zwykle rozdzielane w czasie wykonywania.

- Ogólny odbicia: Zarówno płynne, jak i szwajcarskie/tybetu prawdopodobnie używają odbicia do rozwiązywania nazw właściwości. Jednak płynne wiązania mogą mieć niewielką przewagę ze względu na ich charakter bezpieczny typu, potencjalnie zmniejszając potrzebę rozległej refleksji w czasie wykonywania.

- Złożoność wyrażeń wiążących: Wiązania Tybetu pozwalają na bardziej złożone wyrażenia, które mogą potencjalnie wprowadzić dodatkowe koszty ogólne z powodu analizowania i oceny tych wyrażeń. Jednak ta złożoność zapewnia również mocniejsze możliwości wiązania danych.

Podsumowując, chociaż nie ma wyraźnych punktów odniesienia wydajności porównujących wiązania płynne i szwajcarskie/tybetu w MVVMCROSS, płynne wiązania mogą oferować niewielkie zalety ze względu na ich charakter bezpieczny typu i potencjalne zmniejszenie odbicia środowiska wykonawczego. Jednak deklaratywny charakter wiązań szwajcarskich/tybetów może poprawić czytelność i utrzymanie kodu, co może pośrednio wpływać na wydajność rozwoju i ogólną wydajność zastosowania poprzez zmniejszenie błędów i poprawę jakości kodu. Ostatecznie wybór między tymi metodami wiązania powinien opierać się na konkretnych potrzebach projektu, takich jak złożoność interfejsu użytkownika, ukierunkowana platforma oraz preferencja wiązań opartych na kodzie w porównaniu z deklaratywnymi.

Cytaty:
[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-binding
[6] https://www.reddit.com/r/businessintetelligence/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-itself