Vengono conteggiati solo gli eventi che richiedono l'utilizzo della CPU del server di applicazioni. Alcuni elementi che usano la CPU del server di applicazioni non vengono conteggiati. Si tratta di elementi al di fuori del controllo del programmatore. Non viene conteggiato, ad esempio, il tempo impiegato nel recupero di record dal database, né il tempo di attesa del ritorno di una chiamata. Il programmatore non ha il controllo sul momento in cui il codice necessita della compilazione, quindi questo tempo non viene conteggiato.
Vengono conteggiate quasi tutte le altre operazioni che vengono eseguite nel server di applicazioni, comprese le azioni dichiarative. Se DML nel codice incontra una regola di convalida con una formula, viene conteggiato il tempo impiegato nella valutazione della formula. Il tempo CPU viene calcolato per tutte le esecuzioni sui server di applicazioni Salesforce che si verificano in un'unica transazione Apex, per l'esecuzione di Apex Code e per qualsiasi processo chiamato da tale codice, ad esempio codice del pacchetto e flussi di lavoro. Il tempo CPU di una transazione è privato e isolato dalle altre transazioni. Le operazioni che non utilizzano tempo CPU del server di applicazioni non vengono conteggiate per il tempo CPU.
Per facilitare la riduzione dei casi di esaurimento del tempo CPU, è possibile fare riferimento ad Apex Code Best Practices (Procedure ottimali per Apex Code). Di seguito sono illustrati alcuni dei suggerimenti.
List<Account> lstacc=[Select Id from Account limit 10000]; Set<Id> setIds=new Set<Id>(); for(Account a:lstacc){ //Sicuramente più tempo CPU dovuto al loop setIds.add(a.id); } //La query Map consente di risparmiare tempo CPU //Recupero di tutti gli account in Map Map<id,account> aMap = new Map<id,account>([Select Id,Name from Account limit 50000]); //Creazione di un elenco di account List<account> accList = aMap.values() ; //Creazione di set di ID Set<id> accIds = aMap.keySet() ;
In alcuni casi, i processi aziendali possono non essere eseguiti in tempo reale. Pertanto, se esiste la possibilità di eseguire codice in @future, il contesto viene interrotto. Inoltre, il limite di tempo CPU dei processi asincroni è 60 secondi (6 volte quello dei processi sincroni). Si tenga quindi presente questa possibilità se sussiste il problema del raggiungimento del limite.
Dato che il tempo database non viene conteggiato nel tempo CPU, è sempre meglio prendere in considerazione l'utilizzo di SOQL aggregato per i casi d'uso del proprio business.
Si supponga di voler sommare il valore di alcuni campi di alcuni record. Se a tale scopo si utilizza un loop FOR normale, è ovvio che si impiega tempo CPU. Provare invece a eseguire il calcolo mediante le funzioni aggregate SUM, AVG a livello del database stesso. In questo modo, il tempo CPU viene ridotto. Esaminare le opzioni di raggruppamento o di creazione di un qualche tipo di filtro a livello di database ed eseguire i calcoli a questo livello per ridurre la probabilità di dover affrontare il problema dell'esaurimento del tempo CPU.
È essenziale che un loop FOR su un elenco di record filtri solo dati specifici, poiché un loop eccessivamente lungo aumenta il tempo CPU. Lo stesso vale quando c'è un limite al numero di istruzioni di uno script.
Nota: attualmente esiste un problema noto delle operazioni di inserimento DML che riguarda la CPU Apex nel caso di un numero elevato di record con un numero eccessivo di colonne.
000387833

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.