Aanbevelingen voor het optimaliseren van logica
Van toepassing op deze aanbeveling voor de controlelijst voor prestatie-efficiëntie van Power Platform Well-Architected Framework:
PE:06 | Gebruik logica die goed presteert en zorg ervoor dat verantwoordelijkheden worden overgedragen aan het platform. Gebruik logica alleen waarvoor het bedoeld is en alleen als het nodig is. |
---|
In deze handleiding worden de aanbevelingen beschreven voor het optimaliseren van code- en infrastructuurprestaties. Om uw code en infrastructuur te optimaliseren, moet u uw componenten alleen gebruiken voor hun kerndoel en alleen wanneer dat nodig is. Wanneer u code en infrastructuur overmatig gebruikt, leidt dit tot onnodig resourceverbruik, knelpunten en trage reacties. Om deze inefficiënties te compenseren, moet u meer middelen inzetten om dezelfde taken uit te voeren.
Definities
Term | Definitie |
---|---|
Gelijktijdigheid | Wanneer meerdere taken of processen tegelijkertijd worden uitgevoerd, maar niet noodzakelijkerwijs op exact hetzelfde moment. |
Parallelisme | Wanneer meerdere taken of processen tegelijkertijd worden uitgevoerd. |
Belangrijke ontwerpstrategieën
Het optimaliseren van logica en infrastructuur houdt in dat de logica en de ondersteunende infrastructuur nauwkeurig worden afgestemd om de prestatie-efficiëntie te verbeteren. Er is performante logica nodig die taken snel uitvoert en geen middelen verspilt. Er is een goed ontworpen infrastructuur nodig die gestroomlijnd is om onnodige complexiteit te voorkomen. Een workload moet gebruikmaken van de inherente mogelijkheden van het platform. Deze aanpak zorgt ervoor dat zowel de logica als de infrastructuur primair worden gebruikt voor hun kerndoelen en alleen wanneer dat nodig is.
Logicaprestaties optimaliseren
Om de logische prestaties te optimaliseren, moet u de code aanpassen om het resourcegebruik te verminderen, de runtime te minimaliseren en de prestaties te verbeteren. U kunt logica aanpassen om de efficiëntie en snelheid van een app of flow te verbeteren. Verberg prestatieproblemen niet met brute kracht. Brute force betekent dat er rekenkracht wordt toegevoegd om de codeprestaties te compenseren. Dit betekent dat er extra capaciteit wordt toegevoegd in plaats van dat de bron wordt aangepakt. U moet prestatieproblemen oplossen door middel van optimalisatie. Wanneer u de logische prestaties optimaliseert, kunt u de systeembronnen optimaal benutten, de responstijd verbeteren, de latentie verminderen en de gebruikerservaring verbeteren.
Instrumenteer uw logica
Met instrumentatielogica wordt de praktijk bedoeld waarbij aangepaste gebeurtenisregistratie wordt toegevoegd om gegevens te verzamelen en de logische prestaties tijdens runtime te bewaken. Met logische instrumentatie kunnen ontwikkelaars informatie verzamelen over belangrijke statistieken, zoals de uitvoeringstijd. Door logica te instrumenteren kunnen ontwikkelaars inzicht krijgen in logische 'hot paths', prestatieknelpunten identificeren en de logica optimaliseren voor betere prestatie-efficiëntie.
Idealiter voert u logische analyses al vroeg in de softwareontwikkelingscyclus uit. Hoe eerder u een logisch probleem ontdekt, hoe goedkoper het is om het te verhelpen. U wilt zoveel mogelijk van deze logische analyse automatiseren. Gebruik dynamische en statische codeanalysetools om de handmatige inspanning te beperken. Stroomcontrole kan bijvoorbeeld logica markeren waarvan niet wordt verwacht dat deze goed presteert, zoals een query waarin geen filtercriteria zijn opgegeven. Houd er echter rekening mee dat deze test nog steeds een simulatie van de productie is. Productie biedt het duidelijkste inzicht in logische optimalisatie.
Afweging: hulpprogramma's voor logicacontrole zullen waarschijnlijk de kosten verhogen.
Dynamische paden identificeren
Door uw logica te instrumenteren, kunt u het resourceverbruik voor verschillende logische paden meten. Met deze metingen kunt u hot paths identificeren. Hot paths hebben een aanzienlijk effect op de prestaties en het gebruik van bronnen. Het zijn cruciale of vaak uitgevoerde onderdelen van een programma die hoge prestaties en lage latentie vereisen.
Om code-hotpaden te identificeren, kunt u de volgende stappen volgen:
Runtimegegevens analyseren: verzamel runtimegegevens en analyseer deze om de gebieden van de logica te identificeren die de meeste verstreken tijd in beslag nemen. Zoek naar patronen of logica die vaak worden uitgevoerd of veel tijd kosten om te voltooien.
Prestaties meten: gebruik profileringshulpmiddelen of prestatie-testframeworks om de uitvoeringstijd en het resourceverbruik van verschillende logicapaden te meten. Dit proces helpt knelpunten en verbeterpunten te identificeren. U kunt bijvoorbeeld Bijhouden in Power Apps gebruik om beter inzicht te krijgen in hoe de gebeurtenissen en formules in uw app werken, zodat u de prestaties kunt verbeteren.
Houd rekening met bedrijfslogica en gebruikerseffecten: evalueer het belang van verschillende logicapaden op basis van hun relevantie voor de functionaliteit van de toepassing of kritieke bedrijfsactiviteiten. Bepaal welke logische paden cruciaal zijn voor het leveren van waarde aan gebruikers of voor het voldoen aan prestatievereisten.
Optimaliseer logica
Bij het optimaliseren van logica gaat het om het verfijnen van de structuur en het ontwerp van logica, zodat taken met minder middelen kunnen worden uitgevoerd. Verbeterde logica vermindert onnodige bewerkingen. Het zorgt voor een snellere uitvoering met minder resourceverbruik. Verwijder alle onnodige bewerkingen in het logische pad die de prestaties kunnen beïnvloeden. Geef prioriteit aan het optimaliseren van hot paths om de grootste prestatie-efficiëntiewinst te behalen.
Om de logica te optimaliseren, kunt u de volgende strategieën overwegen:
Verwijder onnodige functieaanroepen : bekijk uw logica en identificeer alle functies die niet essentieel zijn voor de gewenste functionaliteit en de prestaties negatief kunnen beïnvloeden. Als een functieaanroep bijvoorbeeld een validatie uitvoert die eerder in de code is voltooid, kunt u de onnodige validatiefunctieaanroep verwijderen.
Minimaliseer logboekregistratieactiviteiten: logboekregistratie kan nuttig zijn voor foutopsporing en analyse, maar overmatige logboekregistratie kan de prestaties beïnvloeden. Evalueer de noodzaak van elke logboekbewerking en verwijder alle onnodige logboekaanroepen die niet essentieel zijn voor de prestatieanalyse. Het is verstandig om uw systeem de logging zelf te laten in- en uitschakelen. Dit helpt bij het debuggen zonder dat dit problemen veroorzaakt met de productieprestaties.
Optimaliseer lussen en voorwaarden: analyseer lussen en voorwaarden in uw logica en identificeer eventuele onnodige iteraties of voorwaarden die kunnen worden geëlimineerd. Door deze structuren te vereenvoudigen en optimaliseren, kunt u de prestaties van uw code verbeteren. Minimaliseer functieaanroepen binnen lussen en elimineer redundante berekeningen. Overweeg om berekeningen buiten de lus te plaatsen.
Verminder onnodige gegevensverwerking: controleer uw logica op onnodige gegevensverwerkingsbewerkingen, zoals overbodige berekeningen of transformaties. Verwijder deze onnodige bewerkingen om de efficiëntie van uw logica te verbeteren. Gebruik bijvoorbeeld Dataverse berekende kolommen, samengetelde velden of Power Fx-kolommen in plaats van de waarde in de code te berekenen en deze met een opslagbewerking op te slaan.
Optimaliseer gegevensstructuren. Om gegevens efficiënt op te slaan en op te halen, selecteert u de juiste gegevensstructuren en alleen de vereiste gegevenskolommen. Kies de beste gegevensstructuur voor een specifiek probleem. Een geschikte gegevensstructuur verbetert de applicatieprestaties.
Minimaliseer netwerkaanvragen: als het indienen van netwerkaanvragen onderdeel is van uw logica (bijvoorbeeld het gebruik van een connectoractie), kunt u het aantal aanvragen minimaliseren en het gebruik ervan optimaliseren. Verwerk verzoeken indien mogelijk in batches en vermijd onnodige retourzendingen om de prestaties te verbeteren.
Verklein de grootte van de gegevensstructuur: controleer de gegevensvereisten en verwijder alle onnodige velden of eigenschappen. Optimaliseer het geheugengebruik door de juiste gegevenstypen te selecteren en gegevens efficiënt te verpakken.
Werk asynchroon: evalueer of werk asynchroon in plaats van synchroon in uw logica kan worden uitgevoerd. In plaats van de bewerking inline uit te voeren, kunt u bijvoorbeeld overwegen een Power Automate-stroom te implementeren om het werk asynchroon te verwerken.
Configureren vóór aanpassen. Gebruik indien mogelijk standaard applicatiecomponenten. Aanpassingen zoals plug-ins en JavaScript kunnen de prestaties beïnvloeden.
Minimaliseer het aantal besturingselementen. Geef alleen de velden weer die u nodig hebt in de formulieren. Te veel velden kunnen de gebruikersinterface onoverzichtelijk maken en de prestaties beïnvloeden. Beperk het aantal besturingselementen in de opdrachtbalk, de canvas-app of de aangepaste pagina. Vermijd het nesten van galerijen en het toevoegen van te veel componenten aan een galerij.
Optimaliseer gegevensquery's. Laad alleen de gegevens die u nodig hebt in een app of flow. Gebruik server-side weergaven om gegevens vooraf te filteren en zo de gegevens te beperken die relevant zijn voor uw zoekopdracht.
Bekijk de prestatieaanbevelingen die specifiek zijn voor het Power Platform-product waarmee u werkt. Evalueer uw logica aan de hand van deze aanbevelingen om verbeterpunten te identificeren.
Afweging: het optimaliseren van logica en dynamische paden vraagt om expertise. Het identificeren van logische inefficiënties is subjectief en vereist mogelijk zeer deskundige personen. Deze personen kunt u beter van andere taken halen.
Gebruik gelijktijdigheid en parallelisme
Bij gelijktijdigheid en parallellisme worden meerdere taken of processen gelijktijdig of overlappend uitgevoerd om de computerbronnen efficiënt te gebruiken. Deze technieken verhogen de totale doorvoer en het aantal taken dat een workload kan verwerken. Wanneer u taken gelijktijdig of parallel uitvoert, kan dit de runtime van de toepassing beperken en de reactietijden verhogen.
Gelijktijdigheid en parallellisme verdelen de werklast effectief over de computerbronnen. Wanneer u de gelijktijdigheid of parallelliteit vergroot, moet u rekening houden met de impact op andere systemen, omdat u hun limieten kunt overschrijden. Een gelijktijdige lus in een Power Automate-stroom die items een voor een verwerkt, kan bijvoorbeeld de aanvraaglimieten overschrijden van een connector die in de logica van de lus wordt gebruikt.
Gebruik parallellisme. Parallelisme is het vermogen van een systeem om gelijktijdig meerdere taken of processen op meerdere computerbronnen te activeren. Bij parallelisme wordt de werklast verdeeld in kleinere taken die parallel worden uitgevoerd. Wanneer u logica parallel uitvoert, verbeteren de prestaties omdat de werklast over meerdere branches wordt verdeeld.
Gebruik gelijktijdigheid. Gelijktijdigheid is het vermogen van een systeem om meerdere taken of processen uit te voeren. Dankzij gelijktijdigheid kunnen verschillende onderdelen van een workload onafhankelijk van elkaar voortgang boeken, wat de algehele prestaties kan verbeteren.
Gelijktijdige uitvoering: Bij gelijktijdige uitvoering kan dezelfde logica gelijktijdig worden uitgevoerd. Als u de gelijktijdige uitvoering tot één item beperkt, kan dit leiden tot serialisatie van de logica, waardoor er telkens maar één item wordt verwerkt. Door de hoeveelheid gelijktijdige uitvoering van workloaditems te regelen, kunt u het resourcegebruik tijdens de verwerking beter beheren. Zo kunnen Power Automate-stroomlussen worden geconfigureerd om meerdere acties parallel te verwerken met behulp van de eigenschap Gelijktijdigheidsbesturingselement.
Opmerking
Voordat u gelijktijdigheid inschakelt, moet u er rekening mee houden dat dit betekent dat er meerdere acties tegelijkertijd worden uitgevoerd. Als u gegevens schrijft als onderdeel van de lus, moet u ervoor zorgen dat de bestemming van de gegevens gelijktijdige aanvragen kan verwerken.
Wachtrijen: een wachtrij is een opslagbuffer die zich bevindt tussen een aanvragend onderdeel (producent) en het verwerkende onderdeel (consument) van de workload. Er kunnen meerdere consumenten zijn voor één wachtrij. Naarmate de taken toenemen, moet u het aantal consumenten opschalen om aan de vraag te voldoen. De producent plaatst taken in een wachtrij. De wachtrij slaat de taken op totdat een consument voldoende capaciteit heeft. Een wachtrij is vaak de beste manier om werk over te dragen aan een verwerkingsdienst die te maken heeft met piekvraag. Zie Patroon voor lastverdeling op basis van wachtrij en Opslagwachtrijen en Service Bus-wachtrijen voor meer informatie.
Optimaliseer achtergrondtaken
Voor veel toepassingen zijn achtergrondtaken vereist die onafhankelijk van de gebruikersinterface worden uitgevoerd. De applicatie kan de taak starten en doorgaan met het verwerken van interactieve verzoeken van gebruikers. Voorbeelden van achtergrondtaken zijn batchtaken, processorintensieve taken en langlopende processen, zoals workflows. Achtergrondtaken mogen de toepassing niet blokkeren of inconsistenties veroorzaken door vertraagde werking wanneer het systeem belast is. Zie Aanbevelingen voor het ontwikkelen van achtergrondtaken voor meer informatie over het optimaliseren van achtergrondtaken.
Power Platform-facilitering
Code-instrumentatie: bij het bouwen van canvas-apps moeten krachtige patronen worden gebruikt om de efficiëntie van de app te verbeteren, terwijl antipatronen moeten worden vermeden. Zie Overzicht van het maken van krachtige Power Apps voor meer informatie. Gebruik Bijhouden in Power Apps om prestatieproblemen tijdens de ontwikkeling te diagnosticeren en op te lossen.
Betrokkenheid en resultaten meten: bij het bouwen van agenten is het van essentieel belang om gespreksbetrokkenheid en resultaten bij te houden om voor het meten van de prestaties van agenten en voor het ontdekken van verbeterpunten.
Codelogica optimaliseren: met de functie voor oplossingscontrole kunt u een uitgebreide statische analysecontrole op uw oplossingen uitvoeren waarbij een set regels voor best practices wordt toegepast. Zo kunt u snel problematische patronen opsporen. Met Stroomcontrole krijgt u inzicht in welke gebieden van de implementatie van uw stroom een prestatierisico vormen.
Gelijktijdigheid en parallellisme gebruiken: Power Automate-cloudstromen ondersteunen gelijktijdigheid in lussen en triggers. Houd er rekening mee dat limieten voor gelijktijdigheid, lusvorming en debatching van toepassing zijn en gebaseerd zijn op uw prestatieprofiel. Power Apps ondersteunen gelijktijdigheid met behulp van de functie Gelijktijdig.
Dataverse-prestaties optimaliseren: Microsoft Dataverse biedt een uitbreidbaar framework waarmee ontwikkelaars sterk aangepaste ervaringen en maatwerkervaringen kunnen ontwikkelen. Wanneer u Dataverse aanpast, uitbreidt of integreert, moet u op de hoogte zijn van de vastgestelde richtlijnen en best practices. Zie Best practices en richtlijnen bij het gebruik van Microsoft Dataverse.
Gerelateerde informatie
- Limieten voor gelijktijdigheid, lussen en debatching in Power Automate
- Productspecifieke richtlijnen voor het optimaliseren van Dynamics 365-prestaties
- Afstemming en optimalisatie van prestaties voor Customer Engagement-apps
- Overzicht van het maken van krachtige Power Apps
- Overzicht van Monitor
- Prestaties, stabiliteit en betrouwbaarheid van componenten verbeteren met oplossingscontrole
Controlelijst voor prestatie-efficiëntie
Raadpleeg de volledige reeks aanbevelingen.