Condividi tramite


Elementi consigliati per la logica di ottimizzazione

Si applica a questo elemento consigliato dell'elenco di controllo di Efficienza prestazionale di Power Platform Well-Architected:

PE:06 Usa una logica performante e assicurati che scarichi le responsabilità sulla piattaforma. Usa la logica solo per lo scopo previsto e solo quando necessario.

In questa guida vengono descritti gli elementi consigliati per l'ottimizzazione delle prestazioni del codice e dell'infrastruttura. Per ottimizzare il codice e l'infrastruttura, è consigliabile usare i componenti solo per lo scopo principale e solo quando necessario. L'uso eccessivo di codice e infrastruttura crea un consumo di risorse non necessario, colli di bottiglia e risposte lente. Per compensare queste inefficienze, è necessario aggiungere altre risorse per eseguire le stesse attività.

Definizioni

Termine Definizione
Concorrenza Quando più attività o processi vengono eseguiti contemporaneamente, ma non necessariamente nello stesso momento.
Parallelismo Quando vengono eseguite più attività o processi 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 deve utilizzare le funzionalità intrinseche della piattaforma. Questo approccio consente di garantire che la logica e l'infrastruttura siano usate principalmente per gli scopi principali e solo quando necessario.

Ottimizzare le prestazioni della logica

Per ottimizzare le prestazioni della logica, modificare il codice in modo da ridurre l'utilizzo delle risorse, ridurre al minimo il runtime e migliorare le prestazioni. Puoi 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. Per forza bruta si intende l'aggiunta di risorse di calcolo per compensare le prestazioni del codice, ad esempio l'aggiunta di capacità aggiuntiva anziché la risoluzione del problema alla radice. È necessario risolvere i problemi di prestazioni con l'ottimizzazione. L'ottimizzazione delle prestazioni logiche consente di ottimizzare l'utilizzo delle risorse di sistema, migliorare il tempo di risposta, ridurre la latenza e migliorare l'esperienza utente.

Aggiungere strumenti alla logica

Aggiungere strumenti alla logica si riferisce alla procedura per aggiungere la registrazione degli eventi personalizzata per raccogliere dati e monitorare le prestazioni della logica durante il runtime. La strumentazione logica consente agli sviluppatori di raccogliere informazioni sulle metriche chiave, ad esempio il tempo di esecuzione. Instrumentando la logica, gli sviluppatori possono ottenere informazioni dettagliate sui percorsi critici della logica, identificare i colli di bottiglia delle prestazioni e ottimizzare la logica per una migliore efficienza delle prestazioni.

Idealmente, dovresti eseguire l'analisi logica all'inizio del ciclo di vita dello sviluppo del software. Prima si rileva un problema logico, più economico è risolverlo. Vuoi automatizzare il più possibile questa analisi logica. Usa strumenti di analisi del codice statici e dinamici per ridurre lo sforzo manuale. Ad esempio, Verifica flusso può evidenziare la logica che non dovrebbe essere performante, come una query che non specifica i criteri di filtro. Tuttavia, tieni presente che questo test è ancora una simulazione della produzione. La produzione fornisce la comprensione più chiara dell'ottimizzazione logica.

Compromessi: è probabile che gli strumenti di monitoraggio della logica facciano aumentare i costi.

Identificare i percorsi con accesso frequente

Instrumentando la logica, è possibile misurare il consumo di risorse per percorsi logici diversi. Queste misurazioni consentono di identificare i percorsi critici. I percorsi critici hanno un effetto significativo sulle prestazioni e sull'utilizzo delle risorse. Sono sezioni critiche o eseguite di frequente di un programma che richiedono prestazioni elevate e bassa latenza.

Per identificare i percorsi critici del codice, tenere presente la seguente procedura:

  • Analizza i dati di runtime: raccogli i dati di runtime e analizzali per identificare le aree della logica che consumano la maggior parte del tempo trascorso. Cerca i modelli o le sezioni di logica che vengono eseguiti di frequente o che richiedono molto tempo per essere completati.

  • Misura le prestazioni: utilizza strumenti di profilatura o framework di test delle prestazioni per misurare il tempo di esecuzione e il consumo di risorse di percorsi logici diversi. Questo processo aiuta a identificare i colli di bottiglia e le aree di miglioramento. Ad esempio, puoi usare Monitoraggioin Power Apps per ottenere una migliore comprensione di come gli eventi e le formule della tua app funzionano così da porterne migliorare le prestazioni.

  • Considera la logica aziendale e l'effetto utente: valuta l'importanza di percorsi di logica diversi in base alla loro pertinenza per la funzionalità dell'applicazione o per le operazioni aziendali critiche. Determinare quali percorsi logici sono cruciali per fornire valore agli utenti o per soddisfare i requisiti di prestazioni.

Ottimizzazione della logica

L'ottimizzazione della logica consiste nel perfezionare la struttura e la progettazione della logica per eseguire attività con meno risorse. Il miglioramento della logica riduce le operazioni non necessarie. Crea un'esecuzione più rapida con un minor consumo di risorse. È necessario rimuovere tutte le operazioni non necessarie all'interno del percorso logico che potrebbero influire sulle prestazioni. Dai la priorità all'ottimizzazione dei percorsi critici per ottenere i maggiori miglioramenti in termini di prestazioni, efficienza.

Per ottimizzare la logica, prendere in considerazione le seguenti strategie:

  • Rimozione delle chiamate di funzione non necessarie: esamina la logica e identifica tutte le funzioni che non sono essenziali per la funzionalità desiderata e che 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. Valuta la necessità di ogni operazione di registrazione e rimuovi tutte le chiamate di registrazione non necessarie che non sono critiche per l'analisi delle prestazioni. È consigliabile consentire al sistema di attivare e disattivare la registrazione, per facilitare la registrazione senza causare problemi di prestazioni di produzione.

  • Ottimizzare i cicli e i condizionali: analizza i cicli e le condizioni nella logica e identifica eventuali iterazioni o condizioni non necessarie che possono essere eliminate. La semplificazione e l'ottimizzazione di queste strutture possono migliorare le prestazioni del codice. Riduci al minimo le chiamate di funzione all'interno dei cicli ed elimina i calcoli ridondanti. Prendi in considerazione la possibilità di spostare i calcoli all'esterno del ciclo.

  • Riduci l'elaborazione di dati non necessaria: esamina la logica per eventuali operazioni di elaborazione dei dati non necessarie, ad esempio calcoli o trasformazioni ridondanti. Elimina queste operazioni non necessarie per migliorare l'efficienza della logica. Ad esempio, utilizza colonne Dataverse calcolate, campi di rollup o colonne Power Fx anziché calcolare il valore nel codice e archiviarlo con un'operazione di salvataggio.

  • Ottimizza strutture dati. Per archiviare e recuperare i dati in modo efficiente, selezionare le strutture di dati appropriate e solo le colonne di dati necessarie. Scegliere la struttura dati migliore per un problema specifico. Una struttura dati adeguata migliora le prestazioni dell'applicazione.

  • Riduci al minimo le richieste di rete: se la logica prevede l'invio di richieste di rete (ad esempio, l'uso di un'azione del connettore), riduci al minimo il numero di richieste e ottimizzane l'utilizzo. Raggruppa le richieste quando possibile ed evita round trip non necessari per migliorare le prestazioni.

  • Riduci le dimensioni della struttura dei dati: esamina i requisiti dei dati ed elimina tutti i campi o le proprietà non necessari. Ottimizza l'utilizzo della memoria selezionando i tipi di dati appropriati e comprimendo i dati in modo efficiente.

  • Esegui il lavoro in modo asincrono: valuta se il lavoro può essere svolto in modo asincrono anziché sincrono nella logica. Ad esempio, anziché eseguire l'operazione inline, prendi in considerazione l'implementazione di un flusso Power Automate per elaborare il lavoro in modo asincrono.

  • Configura prima di personalizzare. Se puoi, usa i componenti dell'applicazione standard. Personalizzazioni come plug-in e JavaScript possono influire sulle prestazioni.

  • Riduci al minimo i controlli. Visualizza solo i campi necessari nei moduli: troppi campi possono ingombrare l'interfaccia utente e influire sulle prestazioni. Riduci al minimo il numero di controlli nella barra dei comandi, nell'app canvas o nella pagina personalizzata. Evita di nidificare le raccolte o di aggiungere troppi componenti a una raccolta.

  • Ottimizza le query di dati. Carica solo i dati necessari in un'app o in un flusso. Utilizza le visualizzazioni lato server per prefiltrare i dati e restringere i dati pertinenti alla query.

Esamina i consigli sulle prestazioni specifici per il prodotto Power Platform con cui stai lavorando. Valuta la tua logica rispetto a questi consigli per identificare le aree di miglioramento.

Compromesso: l'ottimizzazione della logica e dei percorsi critici richiede esperienza. L'identificazione delle inefficienze logiche è soggettiva e potrebbe richiedere persone altamente qualificate, che potrebbe essere necessario sottrarre ad altre attività.

Usare la concorrenza e il parallelismo

L'uso della concorrenza e del parallelismo comporta l'esecuzione di più attività o processi contemporaneamente o in modo sovrapposto per utilizzare in modo efficiente le risorse di calcolo. Queste tecniche aumentano la velocità effettiva complessiva e il numero di attività che un carico di lavoro può elaborare. L'esecuzione di attività simultanee o in parallelo può ridurre il runtime dell'applicazione e aumentare i tempi di risposta.

La concorrenza e il parallelismo distribuiscono in modo efficace il carico di lavoro tra le risorse di calcolo. Quando aumenti la concorrenza o il parallelismo, considera l'impatto su altri sistemi, poiché potresti superarne i limiti. Ad esempio, un ciclo simultaneo in un flusso Power Automate che elabora ogni elemento alla volta potrebbe superare i limiti di richiesta di un connettore usato nella logica del ciclo.

Usare il parallelismo. Il parallelismo è la capacità di un sistema di attivare simultaneamente più attività o processi su più risorse di calcolo. Il parallelismo suddivide un carico di lavoro in attività più piccole eseguite in parallelo. Quando si esegue la logica in parallelo, le prestazioni migliorano perché il carico di lavoro è distribuito su più rami.

Usa concorrenza. La concorrenza è la capacità di un sistema di eseguire più attività o processi. La concorrenza consente a parti diverse di un carico di lavoro di avanzare in modo indipendente, migliorando le prestazioni complessive.

  • Esecuzione simultanea: l'esecuzione simultanea consente l'esecuzione della stessa logica contemporaneamente. Limitare l'esecuzione simultanea a uno solo può avere l'effetto di serializzare la logica, con conseguente elaborazione di un elemento alla volta. Il controllo della quantità di esecuzione simultanea degli elementi del carico di lavoro può aiutare a gestire l'utilizzo delle risorse durante l'elaborazione. Ad esempio, i cicli di flusso Power Automate possono essere configurati per elaborare più azioni in parallelo utilizzando la proprietà Concurrent Control.

    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 sia in grado di 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 essere presenti più consumer per una singola coda. Man mano che le attività aumentano, è necessario ridimensionare i consumatori per soddisfare la domanda. Il producer inserisce le attività in una coda. La coda archivia le attività fino a quando un consumer non ha capacità. Una coda è spesso il modo migliore per trasferire il lavoro a un servizio di elaborazione che registra picchi di domanda. Per altre informazioni, vedi Modello di livellamento del carico basato sulla coda e Code di archiviazione e code del bus di servizio.

Ottimizzare i processi in background

Molte applicazioni richiedono attività di 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 a esecuzione prolungata, come i flussi di lavoro. Le attività in background non devono bloccare l'applicazione o causare incoerenze dovute a operazioni ritardate quando il sistema è sotto carico. Per altre informazioni sull'ottimizzazione dei processi in background, vedi Elementi consigliati per lo sviluppo di processi in background.

Facilitazione di Power Platform

Strumentazione del codice: quando si creano app canvas, è consigliabile usare i modelli performanti per migliorare l'efficienza dell'app, mentre gli anti-modelli devono essere evitati. Per altre informazioni, vedi Panoramica sulla creazione di Power Apps performanti. Utilizza Monitoraggio in Power Apps per diagnosticare e risolvere i problemi di prestazioni durante lo sviluppo.

Misura engagement e risultati: quando crei agenti, il monitoraggio dell'engagement della conversazione e dei risultati è essenziale per misurare le metriche delle prestazioni dell'agente e scoprire le aree di miglioramento.

Ottimizzazione della logica del codice: Con la funzionalità Verifica soluzione, è possibile eseguire un controllo di analisi statica completo delle soluzioni rispetto a un set di regole di procedure consigliate e individuare rapidamente gli schemi problematici. Con Verifica flusso, puoi ottenere informazioni dettagliate su quali aree dell'implementazione del flusso rappresentano un rischio per le prestazioni.

Uso della concorrenza e del parallelismo: i flussi cloud Power Automate supportano la concorrenza in cicli e trigger. Tieni presente che si applicano i limiti di concorrenza, ciclo e scomposizione e si basano sul profilo di prestazioni. Power Apps supporta la concorrenza tramite la funzione Concurrent.

Ottimizzazione delle prestazioni Dataverse: Microsoft Dataverse fornisce un framework estendibile che consente agli sviluppatori di creare esperienze su misura e altamente personalizzabili. Durante la personalizzazione, l'estensione o l'integrazione con Dataverse, tieni presente le linee guida e le procedure consigliate stabilite. Vedi Procedure consigliate e indicazioni per l'uso di Microsoft Dataverse.

Elenco di controllo dell'efficienza prestazionale

Fai riferimento alla serie completa di elementi consigliati.