Apex Speed Test – Czy System.Debug () limit CPU koszt?

Apex Speed Test Experiment:
ten blog jest częścią eksperymentów Apex Speed Test.
te eksperymenty sprawdzają, czy podczas pisania kodu robimy coś złego? Co jest dobre do pisania, a co nie? Czy Twoja pojedyncza linia kodu zabija limit procesora?
robię eksperymenty, co znalazłem. Jesteś tu mile widziany, jeśli masz coś, co można dodać w tych eksperymentach
#CodeShouldNotEatCPU # CPUScientist

nasz eksperyment:
w tym eksperymencie Sprawdzimy, czy systemdebug zjadają czas procesora, czy nie.

będziesz potrzebował:
komputera, przeglądarki, Salesforce Org i 2000 rekordów ołowiu.

zacznijmy:
pobraliśmy 2000 rekordów ołowiu dla tego eksperymentu. Sprawdzamy te rekordy i powtarzamy je w pętli. Utwórz tę klasę w swojej organizacji programistycznej.

https://gist.github.com/TheVishnuKumar/fe5b64dd906bb9964ec450f9f403a343

eksperyment 1:
w tym eksperymencie nie używamy żadnych debugów. Otwórz konsolę programisty. Teraz Otwórz Okno Execute Anonymous. (Ta opcja jest obecna w menu debugowania.)
skopiuj ten kod ApexSpeedExperiment_1.runExperiment1 (); i uruchom go z konsoli dewelopera. Nazwałem tę metodę 5 razy i oto wyniki.

wynik: średni czas to 29,2 milisekundy.

eksperyment 2:
używamy debugów systemowych w tym eksperymencie. Otwórz konsolę programisty. Teraz Otwórz Okno Execute Anonymous. (Ta opcja jest obecna w menu debugowania.)
skopiuj ten kod ApexSpeedExperiment_1.runExperiment2 (); i uruchom go z konsoli dewelopera. Nazwałem tę metodę 5 razy i oto wyniki.

wynik: średni czas to 110 milisekund.

wniosek:
według naszych eksperymentów, System.debug zużywa limit CPU.
1. Dobrze, że powinniśmy używać potrzebnych debugów w produkcji.
2. Nie używaj debugów do odpowiedzi API. Ponieważ odpowiedzi API mogą być zbyt duże.
3. Nie Drukuj całego wystąpienia rekordu podczas debugowania.
4. Jeśli potrzebne są duże Debugery, Użyj niestandardowego ustawienia w produkcji, aby wydrukować Debugery. Termin ważności:
if( isDebugOn) {
system.debug (’Twój Debug’);
}
5. Usuń niechciane Debugery przed wdrożeniem kodu do produkcji.

Uwaga: jeśli logowanie jest wyłączone, połączenie nadal się odbywa. Jeśli jakakolwiek linia kodu napisana w kodzie zostanie wykonana i zostanie odliczona od czasu wykonania.
zgodnie z dokumentem dewelopera Salesforce:
jeśli argument msg nie jest łańcuchem, metoda debugowania wywołuje Łańcuch.valueOf, aby przekonwertować go na ciąg znaków. Sznurek.metoda valueOf wywołuje metodę toString na argumencie, jeśli jest dostępna, lub dowolną nadpisaną metodę ToString, jeśli argument jest typem zdefiniowanym przez użytkownika. W przeciwnym razie, jeśli nie jest dostępna metoda toString, zwraca ona łańcuchową reprezentację argumentu. Jeśli poziom dziennika dla kodu Apex jest ustawiony na debugowanie lub wyższy, komunikat tej instrukcji debug zostanie zapisany do dziennika debugowania.
powyższy proces zużywa czas procesora.

Dziękujemy za udział w eksperymencie Apex Speed Test. Jeśli masz inny eksperyment na myśli. Proszę dać mi znać. Przeprowadzę eksperyment i podzielę się blogiem tutaj.

0to1Code.Com

You might also like

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.