Raccomandazioni per l'ottimizzazione della logica
Si applica a questa raccomandazione della checklist di efficienza delle prestazioni ben architettata: Power Platform
PE:06 | Utilizzare una logica efficiente e assicurarsi che trasferisca le responsabilità alla piattaforma. Utilizzare la logica solo per lo scopo per cui è stata concepita e solo quando è necessario. |
---|
Questo guida descrive i consigli per ottimizzare le prestazioni del codice e dell'infrastruttura. Per ottimizzare il codice e l'infrastruttura, dovresti utilizzare i componenti solo per il loro scopo principale e solo quando necessario. Un uso eccessivo del codice e dell'infrastruttura può causare un consumo non necessario di risorse, colli di bottiglia e risposte lente. Per compensare queste inefficienze è necessario aggiungere più risorse per portare a termine gli stessi compiti.
Definizioni
Termine | Definizione |
---|---|
Concorrenza | Quando più attività o processi vengono eseguiti contemporaneamente, ma non necessariamente nello stesso momento. |
Parallelismo | Quando più attività o processi vengono eseguiti contemporaneamente. |
Strategie di progettazione chiave
L'ottimizzazione della logica e dell'infrastruttura comporta la messa a punto della logica e dell'infrastruttura di supporto per migliorare l'efficienza delle prestazioni. Richiede una logica performante che esegua le attività rapidamente e non sprechi risorse. Richiede un'infrastruttura ben progettata e semplificata per evitare inutili complessità. Un carico di lavoro dovrebbe utilizzare le capacità intrinseche della piattaforma. Questo approccio aiuta a garantire che sia la logica sia l'infrastruttura vengano utilizzate principalmente per i loro scopi principali e solo quando necessario.
Ottimizzare le prestazioni logiche
Per ottimizzare le prestazioni logiche, modificare il codice per ridurre l'utilizzo delle risorse, ridurre al minimo i tempi di esecuzione e migliorare le prestazioni. È possibile modificare la logica per migliorare l'efficienza e la velocità di un'app o di un flusso. Non mascherare i problemi di prestazioni con la forza bruta. Con la forza bruta si intendono gli attacchi che aggiungono risorse di elaborazione per compensare le prestazioni del codice, ad esempio aggiungendo capacità extra anziché intervenire sulla fonte. È necessario risolvere i problemi di prestazioni tramite l'ottimizzazione. Ottimizzando le prestazioni logiche, si contribuisce a massimizzare l'utilizzo delle risorse di sistema, si migliora il tempo risposta, si riduce la latenza e si migliora l'esperienza utente.
Strumenta la tua logica
La logica di strumentazione si riferisce alla pratica di aggiungere la registrazione personalizzata degli eventi per raccogliere dati e monitorare le prestazioni della logica durante l'esecuzione. La strumentazione logica consente agli sviluppatori di raccogliere informazioni su parametri chiave come il tempo di esecuzione. Strumentando la logica, gli sviluppatori possono ottenere informazioni sui percorsi critici della logica, identificare i colli di bottiglia delle prestazioni e ottimizzare la logica per una migliore efficienza delle prestazioni.
L'ideale sarebbe eseguire l'analisi logica nella fase iniziale del ciclo di vita dello sviluppo del software. Prima si individua un problema logico, più economico sarà risolverlo. Si desidera automatizzare il più possibile questa analisi logica. Utilizzare strumenti di analisi del codice dinamico e statico per ridurre lo sforzo manuale. Ad esempio, Flow Checker può evidenziare la logica che non dovrebbe essere performante, come una query che non specifica criteri di filtro. Tuttavia, bisogna tenere presente che questo test è pur sempre una simulazione della produzione. La produzione fornisce la comprensione più chiara dell'ottimizzazione logica.
Compromesso: è probabile che gli strumenti di monitoraggio logico aumentino i costi.
Identificare i percorsi caldi
Strumentando la logica, è possibile misurare il consumo di risorse per diversi percorsi logici. Queste misurazioni aiutano a identificare i percorsi caldi. I percorsi critici hanno un impatto significativo sulle prestazioni e sull'utilizzo delle risorse. Sono sezioni di un programma critiche o eseguite frequentemente che richiedono prestazioni elevate e bassa latenza.
Per identificare i percorsi critici del codice, prendi in considerazione questi passaggi:
Analizzare i dati di runtime: raccogliere i dati di runtime e analizzarli per identificare le aree della logica che consumano il tempo trascorso più tempo. Cercare schemi o sezioni di logica che vengono eseguiti frequentemente o che richiedono molto tempo per essere completati.
Misurare le prestazioni: utilizzare strumenti di profilazione o framework di test delle prestazioni per misurare il tempo di esecuzione e il consumo di risorse di diversi percorsi logici. Questo processo aiuta a identificare i colli di bottiglia e le aree di miglioramento. Ad esempio, puoi utilizzare Monitor in Power Apps per comprendere meglio il funzionamento degli eventi e delle formule della tua app, in modo da poterne migliorare le prestazioni.
Considerare la logica aziendale e l'effetto utente: valutare l'importanza di diversi percorsi logici in base alla loro pertinenza per la funzionalità dell'applicazione o per le operazioni aziendali critiche. Determinare quali percorsi logici sono essenziali per fornire valore agli utenti o per soddisfare i requisiti prestazionali.
Ottimizzare la logica
L'ottimizzazione della logica consiste nel perfezionare la struttura e la progettazione della logica per eseguire attività con meno risorse. La logica migliorata riduce le operazioni non necessarie. Garantisce un'esecuzione più rapida con un consumo di risorse inferiore. È opportuno rimuovere tutte le operazioni non necessarie all'interno del percorso logico che potrebbero influire sulle prestazioni. Dare priorità all'ottimizzazione dei percorsi critici per ottenere i massimi guadagni in termini di efficienza delle prestazioni.
Per ottimizzare la logica, prendi in considerazione le seguenti strategie:
Rimuovere le chiamate di funzioni non necessarie : Rivedi la tua logica e identifica tutte le funzioni che non sono essenziali per la funzionalità desiderata e potrebbero influire negativamente sulle prestazioni. Ad esempio, se una chiamata di funzione esegue una convalida completata in precedenza nel codice, è possibile rimuovere la chiamata di funzione di convalida non necessaria.
Ridurre al minimo le operazioni di registrazione : La registrazione può essere utile per il debug e l'analisi, ma una registrazione eccessiva può influire sulle prestazioni. Valutare la necessità di ogni operazione di registrazione ed eliminare tutte le chiamate di registrazione non necessarie che non sono critiche per l'analisi delle prestazioni. Una buona norma è consentire al sistema di attivare e disattivare la registrazione, per agevolare il debug senza causare problemi di prestazioni di produzione.
Ottimizzare i cicli e le condizioni : Analizza i cicli e le condizioni nella tua logica e identifica eventuali iterazioni o condizioni non necessarie che possono essere eliminate. Semplificando e ottimizzando queste strutture puoi migliorare le prestazioni del tuo codice. Ridurre al minimo le chiamate di funzione all'interno dei cicli ed eliminare i calcoli ridondanti. Si consideri la possibilità di spostare i calcoli all'esterno del ciclo.
Ridurre l'elaborazione dei dati non necessari : Rivedi la logica per individuare eventuali operazioni di elaborazione dati non necessarie, come calcoli o trasformazioni ridondanti. Elimina queste operazioni non necessarie per migliorare l'efficienza della tua logica. Ad esempio, utilizzare Dataverse colonne calcolate, campi rollup O Power Fx colonne invece di calcolare il valore nel codice e memorizzarlo con un'operazione di salvataggio.
Ottimizzare le strutture dati. Per archiviare e recuperare i dati in modo efficiente, Seleziona ha creato le strutture dati appropriate e solo le colonne dati richieste. Scegliere la migliore struttura dati per un problema specifico. Una struttura dati adeguata migliora le prestazioni dell'applicazione.
Ridurre al minimo le richieste di rete: se la logica prevede l'esecuzione di richieste di rete (ad esempio, utilizzando un'azione di connettore), ridurre al minimo il numero di richieste e ottimizzarne l'utilizzo. Se possibile, effettuare le richieste in batch ed evitare viaggi di andata e ritorno non necessari per migliorare le prestazioni.
Ridurre le dimensioni della struttura dati: rivedere i requisiti dei dati ed eliminare tutti i campi o le proprietà non necessari. Ottimizza l'utilizzo della memoria selezionando i tipi di dati appropriati e impacchettando i dati in modo efficiente.
Lavora in modo asincrono: valuta se il lavoro potrebbe essere Fatto svolto in modo asincrono anziché sincrono nella tua logica. Ad esempio, invece di eseguire l'operazione in linea, si può prendere in considerazione l'implementazione di un flusso per elaborare il lavoro in modo asincrono. Power Automate
Configurare prima di personalizzare. Se possibile, utilizzare componenti applicativi standard. Personalizzazioni come plug-in e JavaScript possono influire sulle prestazioni.
Ridurre al minimo i controlli. Visualizza nei moduli solo i campi di cui hai bisogno: troppi campi possono ingombrare l'interfaccia utente e influire sulle prestazioni. Ridurre al minimo il numero di controlli nella barra dei comandi, nell'app canvas o nella pagina personalizzata. Evitare di nidificare gallerie o di aggiungere troppi componenti a una galleria.
Ottimizza le query sui dati. Carica solo i dati di cui hai bisogno in un'app o in un flusso. Utilizza le viste lato server per prefiltrare i dati e restringere i dati rilevanti per la tua query.
Esamina i consigli sulle prestazioni specifici per il prodotto con cui stai lavorando. Power Platform Valuta la tua logica alla luce di queste raccomandazioni per identificare gli ambiti di miglioramento.
Compromesso: l'ottimizzazione della logica e dei percorsi critici richiede competenza. L'identificazione delle inefficienze logiche è soggettiva e potrebbe richiedere personale altamente qualificato, che potrebbe essere necessario attingere da altre attività.
Utilizzare la concorrenza e il parallelismo
L'uso della concorrenza e del parallelismo implica l'esecuzione di più attività o processi simultaneamente o in modo sovrapposto per utilizzare in modo efficiente le risorse di elaborazione. Queste tecniche aumentano la produttività complessiva e il numero di attività che un carico di lavoro può elaborare. Quando si eseguono attività contemporaneamente o in parallelo, il tempo di esecuzione dell'applicazione può ridursi e i tempi risposta possono aumentare.
La concorrenza e il parallelismo distribuiscono efficacemente il carico di lavoro tra le risorse di elaborazione. Quando si aumenta la concorrenza o il parallelismo, bisogna considerare l'impatto su altri sistemi, poiché si potrebbero superare i loro limiti. Ad esempio, un ciclo simultaneo in un flusso che elabora ogni elemento alla volta potrebbe superare i limiti di richiesta di un connettore utilizzato nella logica del ciclo. Power Automate
Utilizzare il parallelismo. Il parallelismo è la capacità di un sistema di grilletto eseguire simultaneamente più attività o processi su più risorse di elaborazione. Il parallelismo suddivide un carico di lavoro in attività Più piccolo eseguite in parallelo. Quando si esegue la logica in parallelo, le prestazioni migliorano perché il carico di lavoro viene distribuito su più rami.
Utilizzare la concorrenza. La concorrenza è la capacità di un sistema di eseguire più attività o processi. La concorrenza consente alle diverse parti di un carico di lavoro di progredire in modo indipendente, il che può migliorare le prestazioni complessive.
Esecuzione simultanea: l'esecuzione simultanea consente l'esecuzione simultanea della stessa logica. Limitare l'esecuzione simultanea a una sola può avere l'effetto di serializzare la logica, con conseguente elaborazione di un elemento alla volta. Il controllo della quantità di esecuzione contemporanea di elementi del carico di lavoro può aiutare a gestire l'utilizzo delle risorse durante l'elaborazione. Ad esempio, i cicli di flusso possono essere configurati per elaborare più azioni in parallelo utilizzando la proprietà Controllo simultaneo. Power Automate
Nota
Prima di abilitare la concorrenza, tieni presente che ciò significa che verranno eseguite più azioni contemporaneamente. Se stai scrivendo dati come parte del ciclo, assicurati che la destinazione dei dati possa gestire richieste simultanee.
Code: una coda è un buffer di archiviazione situato tra un componente richiedente (produttore) e il componente di elaborazione (consumatore) del carico di lavoro. Possono esserci più consumatori per una singola coda. Man mano che aumentano le attività, è necessario aumentare il numero dei consumatori per soddisfare la domanda. Il produttore inserisce le attività in una coda. La coda memorizza le attività finché un consumatore non ha capacità. Una coda è spesso il modo migliore per delegare il lavoro a un servizio di elaborazione che registra picchi di domanda. Per ulteriori informazioni, vedere Modello di livellamento del carico basato sulle code e Code di archiviazione e code del bus di servizio.
Ottimizzare i lavori in background
Molte applicazioni richiedono attività in background che vengono eseguite indipendentemente dall'interfaccia utente. L'applicazione può avviare il processo e continuare a elaborare le richieste interattive degli utenti. Esempi di processi in background includono processi batch, attività che richiedono un uso intensivo del processore e processi di lunga durata, come i flussi di lavoro. Le attività in background non dovrebbero bloccare l'applicazione o causare incoerenze dovute a ritardi nelle operazioni quando il sistema è sotto carico. Per ulteriori informazioni sull'ottimizzazione dei processi in background, vedere Raccomandazioni per lo sviluppo di lavori di background.
Facilitazione di Power Platform
Codice di strumentazione :Quando si creano app canvas, è opportuno utilizzare modelli performanti per migliorare l'efficienza dell'app, evitando invece gli anti-modelli. Per ulteriori informazioni, vedere Panoramica sulla creazione di prestazioni Power Apps. Utilizzo Monitor In Power Apps per diagnosticare e risolvere problemi di prestazioni durante lo sviluppo.
Misurare l'impegno e i risultati :Quando si costruiscono i copiloti, il tracciamento conversazione coinvolgimento E risultati è essenziale per misurare le prestazioni del copilota e individuare le aree di miglioramento.
Ottimizzazione della logica del codice: con la funzionalità verifica delle soluzioni , puoi eseguire un'analisi statica completa delle tue soluzioni rispetto a una serie di regole di best practice e identificare rapidamente modelli problematici. Con Flow Checker puoi ottenere informazioni su quali aree dell'implementazione del tuo flusso rappresentano un rischio per le prestazioni.
Utilizzo di concorrenza e parallelismo: Power Automate i flussi cloud supportano la concorrenza nei loop e nei trigger. Tieni presente che i limiti di concorrenza, looping e debatching si applicano e sono basati sul tuo profilo di prestazioni. Power Apps supportare la concorrenza utilizzando la funzione Concurrent .
Ottimizzazione delle Dataverse prestazioni: Microsoft Dataverse fornisce un framework estensibile che consente agli sviluppatori di creare esperienze altamente personalizzate e su misura. Quando si personalizza, si estende o si integra con Dataverse, è necessario tenere presenti le linee guida e le best practice consolidate. Vedi Procedure consigliate e indicazioni per l'uso di Microsoft Dataverse.
Informazioni correlate
- Limiti di concorrenza, looping e dibattito in Power Automate
- Indicazioni specifiche per il prodotto per ottimizzare le prestazioni di Dynamics 365
- Ottimizzazione e messa a punto delle prestazioni per le app di coinvolgimento dei clienti
- Panoramica sulla creazione di prestazioni Power Apps
- Panoramica del monitor
- Migliora le prestazioni, la stabilità e l'affidabilità dei componenti con il verificatore di soluzioni
Elenco di controllo dell'efficienza prestazionale
Fai riferimento alla serie completa di elementi consigliati.