Bendrinti naudojant


Programos arba puslapio įkėlimo optimizavimas siekiant didžiausio našumo

Vienas iš pagrindinių veiksnių, formuojančių vartotojo suvokimą apie programą, yra tai, kaip greitai ji atsidaro ir tampa funkcionali. Todėl, kuriant veiksmingą programą, labai svarbu teikti pirmenybę šiam tikslui. Norint pasiekti optimalų programos našumą, reikia atkreipti dėmesį į tris pagrindines sritis:

  1. Greitai įkelkite duomenis
  2. Efektyvūs skaičiavimai
  3. Reikalingų išteklių sumažinimas

Kiekviena iš šių sričių turi keletą bendrų anti-modelių.

Greitai įkelkite duomenis

Vadovaukitės šiomis gairėmis, kad pasiektumėte greitą duomenų įkėlimo programas.

Venkite tiesiogiai užpildyti kolekciją dideliais duomenų kiekiais

Kartais autoriai naudoja ClearCollect() norėdami nukopijuoti duomenis iš serverio į rinkinį savo programoje. Ši praktika yra susijusi su šaltinio perdavimo apribojimais arba dėl to, kad jie planuoja naudoti programos rinkinius kitiems tikslams. Naudojant ClearCollect() gali padidėti programos greitis, kai vėliau bus naudojama kolekcija. Tačiau svarbu būti atsargiems jį įgyvendinant. Naudojant "ClearCollect" tokiu būdu gali sulėtėti programos įkėlimo laikas arba naršymas tarp puslapių. ClearCollect() turi baigti, kad galėtumėte matyti duomenis galerijoje arba lentelėje. Šis veiksmas gali užtrukti ilgai, jei yra daug duomenų arba jei šį metodą naudojate per daug duomenų šaltinių. Kolekcijos geriausiai naudojamos tais atvejais, kai duomenys yra maži ir jums reikia atlikti daug skaičiavimų. Pavyzdžiui, geras kolekcijų panaudojimas yra internetinis užsakymų krepšelis. Klientas gali atnaujinti ir pašalinti prekes kelis kartus prieš pasirinkdamas įvykdyti užsakymą. Be to, galite papildyti kolekciją daugiau duomenų elementų, pvz., galimų nuolaidų, svarbiausių dalykų ir kt. Duomenys, kurie yra "tik skaitomi", turėtų būti prieinami vietoje, neįtraukiant jų į rinkinį.

Apsvarstykite galimybę vengti skambinimo Power Automate norint užpildyti kolekciją

Ši problema yra nedidelis ankstesnio skyriaus variantas. Kartais autoriai taip pat naudoja Power Automate savo kolekciją Power Apps. Maždaug 0,6 sekundės našumo kaina yra momentinė Power Automate. Power Automate turi būti savarankiškai paleistas kiekvieną kartą, kai jis vadinamas. Jis turi paskirstyti atmintį, būti išdėstytas su tinkamais komponentais ir būti pasirengęs paleisti. Kaip ir naudojant aukščiau pateiktą patarimą, vienas ar du skambučiai Power Automate gali būti ne problema, atsižvelgiant į jūsų programą. Tačiau beveik visuotinai prasčiausiai veikiančios programos per daug naudoja šį metodą. Našumo išlaidos gali greitai padidėti ir sugadinti programos našumą.

Venkite naudoti SaveData() ir LoadData() kaip visiškai neprisijungus pasiekiamą scenarijų

Kai kurie autoriai naudoja ClearCollect() ir tada SaveData(), kad išsaugotų duomenis bendram tikslui naudoti neprisijungus. Galite naudoti SaveData(), kad įrašytumėte kolekciją į savo įrenginį, ir LoadData(), kad įkeltumėte ją, kai esate neprisijungę. Tačiau šis metodas nerekomenduojamas tais atvejais, kai yra didelis duomenų kiekis arba jei duomenys yra sudėtingi. Dėl to jūsų programa tampa lėtesnė, nes ji turi palaukti, kol baigsis "ClearCollect()", kad galėtų rodyti duomenis. SaveData() ir LoadData() turėtumėte naudoti tik mažiems ir paprastiems duomenų scenarijams, pvz., nuostatoms ir trumpiesiems sąrašams. Geresnis būdas dirbti su dideliais autonominių duomenų kiekiais yra naudoti neprisijungus pasiekiamą funkciją, Power Apps su kuria veikia Dataverse. Ši funkcija gali efektyviau apdoroti didesnius ir sudėtingesnius duomenis.

Aiškaus stulpelio pasirinkimo naudojimas

Aiškus stulpelių pasirinkimas įjungtas pagal numatytuosius nustatymus. Tačiau kai kurie autoriai šią funkciją išjungia. Problema ta, kad įjungus aiškų stulpelių pasirinkimą (ECS), stulpeliai kartais nenuskaitomi iš duomenų šaltinio, jei duomenys pirmą kartą nuskaitomi į rinkinį. Kadangi kai kuriose lentelėse gali būti daug stulpelių, ECS automatiškai apskaičiuoja, kuriuos stulpelius reikia nuskaityti, atsižvelgiant į jų naudojimą valdikliuose (pvz., galerijose ir formose). Kadangi kai kuriose lentelėse yra daug stulpelių, atsisiuntimo dydžio sumažinimas gali pagreitinti našumą. Kai kuriose lentelėse gali būti šimtas ar daugiau stulpelių. Jei programoje reikia naudoti tik 10 stulpelių, o visus stulpelius sumažinate iš 100 stulpelių lentelės, sumažinate dešimt kartų daugiau duomenų, nei iš tikrųjų reikia.

Dauguma problemų kyla įvedant duomenis į rinkinius. Jei stulpelis yra aiškiai nurodytas valdiklyje, ECS veikia gerai. Be to, ECS paprastai dirba kolekcijoms. Tačiau stulpelių linija kartais prarandama, kai duomenys perkeliami per rinkinius ir kintamuosius. Ir todėl Power Apps gali prarasti stulpelio, kurį jis turėtų gauti, sekimą. Norėdami išspręsti šią problemą, galite priverstinai Power Apps "prisiminti" stulpelį naudodami funkciją ShowColumns . Pavyzdys.

    ClearCollect(
        MyColTable, 
        ShowColumns(Filter(BankAccounts, AcountNo = 32),
        "Col1", 
        "Col2", 
        "Col3")
    );

Kur Col1 ir Col2yra stulpeliai, Col3 kuriuos tikitės gauti iš duomenų šaltinio (pvz., Account duomenų šaltinio).

Arba į formą galite įtraukti paslėptą valdiklį, nurodantį stulpelį. Tai verčia Power Apps "prisiminti" stulpelį.

Greiti skaičiavimai

Greiti (arba efektyvūs) skaičiavimai savaime yra veiklos tikslas. Daugiau informacijos rasite Greiti (efektyvūs) skaičiavimai. Tačiau yra keletas bendrų anti-modelių, kurie taip pat gali turėti įtakos programos įkėlimui, todėl juos aptariame čia. Toliau pateikiamas optimizavimo priemonių, į kurias turėtumėte atsižvelgti ir kurios gali turėti įtakos programos paleidimui arba puslapio naršymui, sąrašas.

Programėlės formulių naudojimas

Istoriškai daugelis autorių į "OnStart" įdėjo daug skaičiavimų. Kai įdedate išraišką į "OnStart", ji priverčia Power Apps paleisti tą išraišką tiksliai tada, kai programa paleidžiama, ir prieš visa kita. Tačiau pristatę App.Formulas galite leisti Power Apps nuspręsti, kada vykdyti išraišką. Power Apps gali paleisti formulę "Just-in-time", kol jos nereikia. Daugiau informacijos ieškokite Programėlių formulės. Naudokite App.Formulas, kad padalytumėte formulę į dalis, kurios Power Apps gali efektyviau išdėstyti vykdymą.

Naudokite vienu metu

Naudokite funkciją Concurrent, kad leistumėte formules vykdyti tuo pačiu metu. Įprasta naudoti šią funkciją kolekcijoms užpildyti, nes ji leidžia vykdyti lygiagrečiai. Nors tai gali šiek tiek pagreitinti, pridėjus daug duomenų šaltinių gali kilti laiko ir ribojimo problemų.

Patobulinto našumo naudojimas paslėptiems valdikliams

Kai įjungta pagal numatytuosius nustatymus visose naujose programose, sukurtose nuo 2022 m. gruodžio mėn., nepateikiamas joks valdiklis, Power Apps kuris iš pradžių nėra matomas.

Sumažinkite reikiamus išteklius

Sumažinkite išteklius, reikalingus programai arba ekranui paleisti. Šios pastangos apima kruopštų programai ar ekranui reikalingų išteklių apimties nustatymą arba skaidymą. Toliau pateikiami keli būdai, kaip jums padėti.

Naudokite mažos priklausomybės pradžios ekraną ir pašalinkite nenaudojamus ekranus.

Naudokite mažos priklausomybės pirmąjį ekraną, pvz., pasveikinimą savo programoje. Sukurkite ekraną, kuriame neįkeliama galerija, lentelė ar nuorodos duomenys. Tai valdo vartotojo greičio suvokimą ir leidžia Power Fx tinkamai atidėti kai kuriuos skaičiavimus vėlesniam laikui. Jei turite nenaudojamų ekranų, pašalinkite juos.

Išlaikykite mažas kelių ekranų priklausomybes tarp ekranų

Kryžminės puslapių nuorodos verčia įkelti papildomus puslapius per nuorodas, pavyzdžiui, nuorodų valdiklius puslapiuose ir įdėti į rinkinius. Kai kurios nuorodos gali būti neišvengiamos. Jei įmanoma, centralizuokite bendrąsias nuorodas į vieną puslapį, kad būtų įkeliamas tik puslapis.

Apsvarstykite įterptąją laikmeną

Autoriai kartais įterpia mediją į savo programas, kad užtikrintų greitą įkėlimą. Jei turite įdėtąją mediją, apsvarstykite, ar ją naudojate, ar ne. Jei ne, ištrinkite jį. Jei įdėjote .png failą, apsvarstykite galimybę pakeisti .svg failą, kuris yra mažesnis. Atminkite, kad jei naudojate .svg, .svg šriftas turi būti kliento kompiuteryje. Apsvarstykite įterptąją medijos skiriamąją gebą. Ar jis per didelis įrenginiui, kuriame jis bus naudojamas?

Nepamirškite App.StartScreen

Jei naudojate App.StartScreen, įsitikinkite, kad pirmasis ekranas yra tuščias. Dėl dabartinės programos pakuotės pirmasis loginis ekranas visada yra susietas su programos init logika ir bus inicijuotas, neatsižvelgiant į tai, ar kada nors prie jo pereisime.

Apsvarstykite galimybę padalyti programą

Jei programa didelė, apsvarstykite galimybę ją padalyti į mažesnes programas. Jei skirtingose programos dalyse funkcijos yra pakankamai atskiros, šis metodas gali veikti. Tokiu atveju sukuriate faktinę atskirą programą, kurią paleidžiate su parametrais, apimančiais kontekstą iš pirmosios arba tėvų programos.

Pasiūlymai

Norėdami pasiekti greitos programos ir puslapio pradžios tikslą, apsvarstykite šiuos klausimus ir pasiūlymus:

  1. Ar įkeliate daug duomenų pirmame ekrane? Ar galite naudoti kitą pirmąjį ekraną?
  2. Ar programos įkėlimo pradžioje vykdote daug komandų ar Power Fx išraiškų? Ar galite atidėti šias komandas ir išraiškas vėlesniam programos taškui? Gaunate tik tuos duomenis, kurių jums iš tikrųjų reikia norint paleisti programą? 1 Ar galite konvertuoti App.OnStart išraiškas į pavadintas formules su App.Formulas? Tai leidžia Power Fx nuspręsti, kada iš tikrųjų vykdyti formulę, o ne priversti ją įvykti įkeliant ar naršant įvykius.
  3. Ar galite naudoti atskirą Power Automate srautą, kad vietinėje duomenų saugykloje sukurtumėte laikiną lentelę, pvz., Dataverse kuri sujungtų duomenis iš skirtingų šaltinių? Ir tada pasiekti tuos duomenis savo "Power App"?
  4. Jei norite pradėti verslo procesus, ar galite naudoti serverio suaktyvintus veiksmus, o ne iškviesti Power Automate srautą?
  5. Ar galite serveryje sukurti rodinį, kuris sujungia duomenis už jus?
  6. Jei programoje norite naudoti neprisijungus pasiekiamus duomenis, ar galite naudoti neprisijungus pasiekiamą funkciją, Power Apps su kuria veikia Dataverse? Jei jūsų duomenų nėra Dataverse, ar galite juos ten perkelti?