Apex Speed Test Experiment:
Dieser Blog ist Teil von Apex Speed Test Experiments.
Diese Experimente überprüfen, ob wir beim Schreiben von Code etwas falsch machen? Was ist gut zu schreiben oder was nicht? Tötet Ihre einzelne Codezeile das CPU-Limit?
Ich mache Experimente, was auch immer ich gefunden habe. Sie sind hier herzlich willkommen, Wenn Sie etwas haben, das in diesen Experimenten hinzugefügt werden kann
#CodeShouldNotEatCPU #CPUScientist
Unser Experiment:
In diesem Experiment werden wir das if-System überprüfen.sie essen Ihre CPU-Zeit oder nicht.
Sie benötigen:
Einen Computer, einen Browser, eine Salesforce-Organisation und 2000 Lead-Datensätze.
Fangen wir an:
Wir haben 2000 Lead-Datensätze für dieses Experiment genommen. Wir fragen diese Datensätze ab und durchlaufen eine Schleife. Erstellen Sie diese Klasse in Ihrer Entwicklerorganisation.
https://gist.github.com/TheVishnuKumar/fe5b64dd906bb9964ec450f9f403a343
Experiment 1:
Wir verwenden in diesem Experiment keine Debugger. Öffnen Sie die Entwicklerkonsole. Öffnen Sie nun das anonyme Fenster ausführen. (Diese Option im Debug-Menü.)
Kopieren Sie diesen Code ApexSpeedExperiment_1.runExperiment1(); und führen Sie es von der Entwicklerkonsole aus. Ich habe diese Methode 5 Mal aufgerufen und hier sind die Ergebnisse.
Ergebnis: Die durchschnittliche Zeit beträgt 29,2 Millisekunden.
Experiment 2:
In diesem Experiment verwenden wir Systemdebugs. Öffnen Sie die Entwicklerkonsole. Öffnen Sie nun das anonyme Fenster ausführen. (Diese Option im Debug-Menü.)
Kopieren Sie diesen Code ApexSpeedExperiment_1.runExperiment2(); und führen Sie es von der Entwicklerkonsole aus. Ich habe diese Methode 5 Mal aufgerufen und hier sind die Ergebnisse.
Ergebnis: Die durchschnittliche Zeit beträgt 110 Millisekunden.
Fazit:
Nach unseren Experimenten, System.debug verbrauchen CPU grenze.
1. Es ist gut, dass wir benötigte Debugger in der Produktion verwenden sollten.
2. Verwenden Sie keine Debugger für die API-Antwort. Da die Antworten von APIs zu groß sein können.
3. Drucken Sie beim Debuggen nicht die gesamte Datensatzinstanz.
4. Wenn große Debugger benötigt werden, verwenden Sie eine benutzerdefinierte Einstellung in der Produktion, um Debugger zu drucken. Verwendbar bis::
wenn( isDebugOn ){
system.debug(‚Dein Debug‘);
}
5. Entfernen Sie unerwünschte Debugger, bevor Sie den Code in der Produktion bereitstellen.
Hinweis: Wenn die Protokollierung deaktiviert ist, erfolgt der Anruf weiterhin. Wenn eine Codezeile, die in den Code geschrieben wird, ausgeführt wird und gegen die Ausführungszeit gezählt wird.
Laut Salesforce-Entwicklerdokument:
Wenn das Argument msg kein string ist, ruft die Debug-Methode String auf.valueOf , um es in einen String zu konvertieren. Zeichenfolge.valueOf-Methode ruft die toString-Methode für das Argument auf, falls verfügbar, oder eine überschriebene toString-Methode, wenn das Argument ein benutzerdefinierter Typ ist. Andernfalls, wenn keine toString-Methode verfügbar ist, wird eine Zeichenfolgendarstellung des Arguments zurückgegeben. Wenn die Protokollebene für Apex-Code auf DEBUG oder höher festgelegt ist, wird die Nachricht dieser Debug-Anweisung in das Debug-Protokoll geschrieben.
Dieser obige Prozess verbraucht die CPU-Zeit.
Vielen Dank für Ihre Teilnahme am Apex Speed Test Experiment. Wenn Sie ein anderes Experiment im Sinn haben. Bitte lassen Sie es mich wissen. Ich werde ein Experiment durchführen und den Blog hier teilen.
Ursprünglich geschrieben am 0to1Code.Com