Kun verrataan sujuvien sidosten suorituskykyä Sveitsin/Tiibetin sitoutumiseen MVVMCROSS: ssä, useita tekijöitä tulee peliin. Tässä on yksityiskohtainen erittely:
Sidontatyyppeistä
- Sujuva sidokset: Nämä ovat tyyppisissä sidontalausekkeissa, jotka on luotu C# -koodissa. Ne ovat erityisen hyödyllisiä iOS: n ja UWP: n kaltaisilla alustoilla, joissa XML -asettelutiedostot eivät ole helposti muokattavissa. Sujuvana sidokset tarjoavat selkeän, voimakkaasti tyyppisen tavan sitoa näkymäominaisuudet mallin ominaisuuksien näkemiseen, mikä voi auttaa vähentämään ajonaikaisia virheitä kiinnittämällä tyypin epäsuhta käännöshetkellä [1] [4].
- Sveitsin/Tiibetin sitovat lausekkeet: Nämä ovat merkkijonopohjaisia sidontalausekkeita, joita käytetään tyypillisesti XML-asettelutiedostoissa (esim. Androidin AXML). Sveitsiläiset sidokset ovat joustavampia ja sallivat monimutkaiset lausekkeet, kuten ketjuttaminen ja ehdollinen logiikka. Tiibetin sitoutuminen laajentaa tätä tukemalla edistyneempiä syntaksia, jotka ovat samanlaisia kuin mini-kielet sitoutumisilmaisuihin [1] [6].
Suorituskykyvertailu
Käännä-aika vs. Runtime-arviointi
- Sujuva sidokset: Koska sujuvat sidokset on määritelty C#: ssä, ne arvioidaan käännösaikana. Tämä tarkoittaa, että minkä tahansa tyyppiset virheet tai sitovat kysymykset saadaan varhain, mikä parantaa mahdollisesti kehitystehokkuutta. Todellinen suorituskyky ajon aikana on kuitenkin yleensä samanlainen kuin muut sitoutumismenetelmät, koska sitoutumisasetukset suoritetaan edelleen suorituksen aikana.
- Sveitsin/Tiibetin sidokset: Nämä sidokset arvioidaan suorituksen aikana, koska ne on määritelty jousiksi XML -tiedostoissa. Tämä tarkoittaa, että sidontalausekkeiden virheet löydetään vain, kun sovellus suoritetaan, mikä voi johtaa hitaampiin kehitysjaksoihin, jos niitä ei ole testattu oikein. Runtime -arviointi ei kuitenkaan luonnostaan tee niistä hitaampia kuin sujuvat sidokset, kun sidokset on asetettu.
Runtime Yläpää
- Sujuva sidokset: Fluent -sidosten yläpuolella on minimaalinen, koska ne luovat suoraan tarvittavat sitoutumisobjektit koodissa. Tämä suora lähestymistapa voi olla hiukan tehokkaampi kuin jäsennäkymien jäsentäminen suorituksen aikana.
- Sveitsin/Tiibetin sidokset: Nämä vaativat sidontailmaisun jäsentämistä XML: stä suorituksen aikana, mikä tuo jonkin verran yleiskustannuksia sujuviin sidoksiin verrattuna. Tämä yleiskustannus on kuitenkin tyypillisesti pieni, ellei sillä ole hyvin monimutkaisia tai lukuisia sidoksia.
Kehityksen tehokkuus ja virheenkäsittely
- Sujuva sidokset: Tarjoa parempaa kehitystehokkuutta kääntämisajan tarkistuksista, jotka voivat epäsuorasti parantaa suorituskykyä vähentämällä ajoneuvon sitomiskysymyksiä käytettyä aikaa.
- Sveitsin/Tiibetin sidokset: Vaikka ne ovat joustavampia monimutkaisissa lausekkeissa, ne vaativat enemmän ajonaikaisia tarkistuksia ja voivat johtaa hitaampaan kehitykseen, jos niitä ei testata asianmukaisesti.
Päätelmä
RAW -suorituskyvyn kannalta sekä sujuvat että sveitsiläiset/Tiibet -sidokset ovat yleensä vertailukelpoisia asetettuaan. Fluent Sidokset tarjoavat kuitenkin etuja kehityksen tehokkuudessa ja kääntämisajan virheen havaitsemisessa, mikä voi epäsuorasti parantaa sovelluksen yleistä suorituskykyä vähentämällä virheenkorjausaikaa. Sveitsin/Tiibetin sidokset tarjoavat enemmän joustavuutta monimutkaisissa skenaarioissa, mutta vaativat enemmän ajonaikaisia tarkistuksia. Valinta niiden välillä riippuu usein projektin erityistarpeista ja kehittäjän mieluummin koodipohjaista verrattuna XML-pohjaisiin sitoutumismääritelmiin.
Viittaukset:[1] https://blog.ostebaronen.dk/2018/01/mvmcross-binding-target.html
.
.
[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