Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Existem diferenças de desempenho entre ligações fluentes e ligações suíças/tibetas em mvvmcross


Existem diferenças de desempenho entre ligações fluentes e ligações suíças/tibetas em mvvmcross


No MVVMcross, as ligações fluentes e as ligações suíças/tibetas são usadas para ligação de dados, mas diferem em sua abordagem e uso. Embora não haja informações explícitas sobre as diferenças de desempenho entre esses dois tipos de ligações, podemos analisar suas características para entender possíveis implicações:

ligações fluentes

As ligações fluentes são uma sintaxe baseada em C que permite que os desenvolvedores criem ligações no código. Essa abordagem é particularmente útil em plataformas como iOS e OSX, onde os arquivos de layout XML não são facilmente editários humanos. As ligações fluentes fornecem uma maneira segura para vincular propriedades, o que pode ajudar a reduzir os erros de tempo de execução, capturando incompatibilidades do tipo no momento da compilação. No entanto, como são definidos no código, eles podem exigir mais despesas gerais em termos de manutenção do código em comparação com ligações declarativas como Swiss/Tibete.

Swiss/Tibet ligações

As ligações suíças e tibetas são declarativas, o que significa que elas são definidas nos formatos XML ou String. Essas ligações são mais concisas e podem ser facilmente incorporadas em arquivos de layout. A sintaxe de ligação ao Tibete, em particular, oferece uma linguagem de expressão mais rica, com recursos como chamadas de conversor de valor semelhante à função, ligação múltipla e sintaxe simples do operador. Essa abordagem declarativa pode ser mais eficiente em termos de legibilidade e manutenção de código, pois as ligações são claramente visíveis nos arquivos de layout.

Considerações de desempenho

Embora não haja dados específicos sobre as diferenças de desempenho entre ligações fluentes e suíças/tibetas, os seguintes fatores podem influenciar o desempenho:

-Resolução de tempo de compilação vs. tempo de execução: Em geral, as ligações resolvidas em tempo de compilação (como alguns aspectos das ligações fluentes devido à sua natureza segura para o tipo) podem oferecer melhor desempenho em comparação com a resolução de tempo de execução. No entanto, as ligações MVVMCross são normalmente resolvidas em tempo de execução.

- Organização da reflexão: As ligações fluentes e suíças/tibetas provavelmente usam a reflexão para resolver os nomes de propriedades. No entanto, as ligações fluentes podem ter uma pequena vantagem devido à sua natureza segura, potencialmente reduzindo a necessidade de reflexão extensa em tempo de execução.

- Complexidade das expressões de ligação: as ligações do Tibete permitem expressões mais complexas, o que pode potencialmente introduzir sobrecarga adicional devido à análise e avaliação dessas expressões. No entanto, essa complexidade também fornece recursos de ligação de dados mais poderosos.

Em resumo, embora não haja referências explícitas de desempenho comparando ligações fluentes e suíças/tibetas em MVVMcross, as ligações fluentes podem oferecer pequenas vantagens devido à sua natureza segura para o tipo e a redução potencial na reflexão do tempo de execução. No entanto, a natureza declarativa das ligações suíças/tibetas pode melhorar a legibilidade e a manutenção do código, o que pode afetar indiretamente a eficiência do desenvolvimento e o desempenho geral do aplicativo, reduzindo erros e melhorando a qualidade do código. Por fim, a escolha entre esses métodos de ligação deve ser baseada nas necessidades específicas do projeto, como a complexidade da interface do usuário, a plataforma sendo direcionada e a preferência por ligações baseadas em código versus declaração.

Citações:
[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-mauii -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/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-mvmcross
[9] https://www.mvvmcross.com/documentation/fundamentals/value-converters
[10] https://stackoverflow.com/questions/48422489/mvvmcross-tibet-binding-to-viewmodel-iSelf