Share via


Concurrent-funktio

Soveltuu: Pohjaan perustuvat sovellukset Mallipohjaiset sovellukset

Arvioi useita kaavoja keskenään samanaikaisesti.

Kuvaus

Concurrent-funktion avulla samassa ominaisuudessa määritettyjä useita kaavoja voidaan arvioida samanaikaisesti, jos yhdistin tai Dataverse kutsuu. Yleensä useita kaavoja arvioidaan ketjuttamalla ne yhteen operaattorilla ; (puolipiste), joka arvioi jokaisen kaavan järjestyksessä peräkkäin. Concurrent-funktion avulla sovellus arvioi kaikki ominaisuuden kaavat samanaikaisesti myös ;-operaattorin käytön jälkeen. Tämä samanaikaisuus auttaa käyttäjiä odottamaan samaa tulosta vähemmän.

Paranna sovelluksesi suorituskykyä, kun se lataa tietoja, käyttämällä sovelluksen OnStart-ominaisuuden Concurrent-funktiota. Kun tietokutsut eivät ala ennen edellisten kutsujen valmistumista, sovelluksen on odotettava kaikkien pyyntöaikojen summaa. Jos tietokutsut alkavat samanaikaisesti, sovelluksen on odotettava vain pisimmän pyyntöajan verran. Selaimet parantavat usein suorituskykyä suorittamalla verkkopuheluita samanaikaisesti.

Ei voida ennustaa, missä järjestyksessä kaavojen arviointi Concurrent-funktiossa alkaa ja päättyy. Concurrent-funktion kaavoissa ei tulisi olla riippuvuuksia muihin kaavoihin samassa Concurrent-funktiossa, ja Power Apps tuo näyttöön virhesanoman, jos riippuvuuksia on. Funktion sisältä voi turvallisesti käyttää riippuvuuksia Concurrent-funktion ulkopuolisiin kaavoihin, koska ne päättyvät ennen Concurrent-funktion käynnistymistä. Concurrent-funktion jälkeiset kaavat voivat turvallisesti käyttää riippuvuuksia funktion sisäisiin kaavoihin. Ne kaikki päättyvät ennen Concurrent-funktion päättymistä, ja suoritus siirtyy ketjun seuraavaan kaavaan (jos käytät operaattoria ;). Varo hienovaraisia järjestysriippuvuuksia, jos kutsut funktioita tai palvelumenetelmiä, joilla on sivuvaikutuksia.

Voit ketjuttaa kaavoja yhteen operaattorilla ;Concurrent-funktion argumentin sisällä. Esimerkiksi funktio Concurrent( Set( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) ) arvioi kaavan Set( a, 1 ); Set( b, a+1 ) samanaikaisesti kaavan Set( x, 2 ); Set( y, x+2 ) kanssa. Tässä tapauksessa kaavojen sisäisiä riippuvuuksia voidaan käyttää: a määritetään ennen b:tä ja x määritetään ennen y:tä.

Sen mukaan, missä laitteessa tai selaimessa sovellus on käynnissä, vain kourallinen kaavoja saatetaan arvioida samanaikaisesti. Concurrent käyttää käytettävissä olevia ominaisuuksia, eikä sen suoritus pääty, ennen kuin kaikki kaavat on arvioitu.

Jos otat kaavatason virheiden hallinnan käyttöön (lisäasetuksissa), ensimmäinen argumentista löytyvä virhe palautetaan Concurrent-funktiosta; muutoin palautetaan tyhjä. Jos kaikki kaavat ovat oikein, palautetaan arvo tosi. Jos yksi kaava epäonnistuu, kyseisen kaavan loppuosa pysäytetään, mutta muiden kaavojen arviointi jatkuu.

Voit käyttää Concurrent-funktiota vain toimintakaavoissa.

Syntaksi

Concurrent( Formula1, Formula2 [, ...] )

  • Formula(s) – pakollinen. Samanaikaisesti arvioitavat kaavat. Vähintään kaksi kaavaa on annettava.

Esimerkit

Tietojen lataamisen nopeuttaminen

  1. Luo sovellus ja lisää neljä tietolähdettä Microsoft Dataverse, SQL Serveristä tai SharePoint.

    Tässä esimerkissä käytetään neljää taulukkoa SQL Azuren Adventure Works -mallitietokannasta. Kun olet luonut tietokannan, yhdistä se Power Appsista käyttämällä täydellistä palvelimen nimeä (esimerkiksi srvname.database.windows.net):

    Yhteyden muodostaminen Azuren Adventure Works -tietokantaan.

  2. Lisää Button-ohjausobjekti ja määritä sen OnSelect-ominaisuudeksi seuraava kaava:

    ClearCollect( Product, '[SalesLT].[Product]' );
    ClearCollect( Customer, '[SalesLT].[Customer]' );
    ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
    ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
    
  3. Ota Microsoft Edge- tai Google Chrome -selaimessa kehitystyökalut käyttöön, jotta voit tarkkailla verkkoliikennettä sovelluksen ollessa käynnissä.

  4. (valinnainen) Ota verkon rajoittaminen käyttöön tämän vertailun vaikutuksen liioittelemista varten.

  5. Pidät Alt-näppäintä painettuna, valitse painike ja seuraa sitten verkkoliikennettä.

    Työkalut näyttävät neljä sarjana suoritettavaa pyyntöä, kuten tässä esimerkissä. Todelliset ajat on poistettu, sillä ne vaihtelevat suuresti. Kaaviosta nähdään, että jokainen kutsu käynnistyy, kun edellinen on päättynyt:

    Koko aikavälin kattava aikakaavio neljästä verkkopyynnöstä, joista jokainen käynnistyy edellisen päätyttyä.

  6. Tallenna, sulje ja avaa sovellus uudelleen.

    Power Apps tallentaa tietoja välimuistiin, joten painikkeen valitseminen uudelleen ei välttämättä aiheuta neljää uutta pyyntöä. Aina, kun haluat testata suorituskykyä, sulje ja avaa sovellus uudelleen. Jos olet ottanut verkon rajoituksen käyttöön, voit halutessasi poistaa sen käytöstä, kunnes olet valmis toiseen testiin.

  7. Lisää toinen Button-ohjausobjekti ja määritä sen OnSelect-ominaisuudeksi seuraava kaava:

    Concurrent(
        ClearCollect( Product, '[SalesLT].[Product]' ),
        ClearCollect( Customer, '[SalesLT].[Customer]' ),
        ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ),
        ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
    )
    

    Huomaa, että lisäsit samat ClearCollect-kutsut ensimmäiseen painikkeeseen, mutta ne on tässä vaiheessa rivitetty ja erotettu pilkulla Concurrent-funktiossa.

  8. Tyhjennä verkonvalvonta selaimessa.

  9. Jos käytit aiemmin verkon rajoittamista, ota se uudelleen käyttöön.

  10. Pidät Alt-näppäintä pohjassa, valitse toinen painike ja seuraa sitten verkkoliikennettä.

    Työkalut näyttävät neljä samanaikaisesti suoritettavaa pyyntöä, kuten tässä esimerkissä. Tässäkin todelliset ajat on poistettu, koska ne vaihtelevat suuresti. Kaaviosta nähdään, että kaikki kutsut käynnistyvät samanaikaisesti, eivätkä odota edellisen päättymistä:

    Noin puolet koko aikavälistä kattava aikakaavio neljästä verkkopyynnöstä, jotka kaikki käynnistyvät yhdessä.

    Nämä kaaviot perustuvat samaan asteikkoon. Käyttämällä Concurrent-funktiota olet puolittanut näiden operaatioiden loppuun suorittamiseen kuluvan kokonaisajan.

  11. Tallenna, sulje ja avaa sovellus uudelleen.

Kilpailutilanne

  1. Lisää sovellukseesi yhteys Microsoft Translator -palveluun.

  2. Lisää Text input-ohjausobjekti ja nimeä se nimellä TextInput1, jos sillä on eri nimi.

  3. Lisää Button-ohjausobjekti ja määritä sen OnSelect-ominaisuudeksi seuraava kaava:

    Set( StartTime, Value( Now() ) );
    Concurrent(
        Set( FRTrans, MicrosoftTranslator.Translate( TextInput1.Text, "fr" ) );
            Set( FRTransTime, Value( Now() ) ),
        Set( DETrans, MicrosoftTranslator.Translate( TextInput1.Text, "de" ) );
            Set( DETransTime, Value( Now() ) )
    );
    Collect( Results,
        {
            Input: TextInput1.Text,
            French: FRTrans, FrenchTime: FRTransTime - StartTime,
            German: DETrans, GermanTime: DETransTime - StartTime,
            FrenchFaster: FRTransTime < DETransTime
        }
    )
    
  4. Lisää Data table-ohjausobjekti ja aseta sen Items-ominaisuudeksi Results.

  5. Valitse oikeanpuoleisen ruudun Ominaisuudet-välilehdessä Muokkaa kenttiä, jotta voit valita Kentät-ruudun.

  6. Valitse kenttäluettelossa kaikkien niiden kenttien valintaruutu, joiden haluat näkyvän arvotaulukossa.

  7. (valinnainen) Vedä Syöte-kenttä luettelon alkuun ja vedä FrenchFaster-kenttä luettelon loppuun.

    Tuloskokoelman kenttäluettelo.

  8. Valitse Text input-ohjausobjekti ja kirjoita tai liitä käännettävä lause.

  9. Pidä Alt-näppäintä painettuna ja täytä taulukko valitsemalla painike useita kertoja.

    Ajat näkyvät millisekunteina.

    Arvotaulukon näyttö, joka sisältää tulokset merkkijonon Hello World kääntämisestä ranskaksi ja saksaksi. Joskus kääntäminen ranskaksi on nopeampaa kuin saksaksi ja joskus päinvastoin.

    Joissakin tapauksissa ranskankielinen käännös saadaan nopeammin kuin saksankielinen ja päinvastoin. Molemmat käynnistyvät samaan aikaan, mutta toinen palaa ennen toista monista eri syistä, kuten verkkoviiveen ja palvelinpuolen käsittelyn takia.

    Kilpailutilanne ilmenee, jos sovelluksella on riippuvuus ensin päättyvään käännökseen. Power Apps kuitenkin merkitsee useimmat havaitsemansa ajoitusriippuvuudet.