Single if vs ternary operator - Leistung
Benötigen Sie Verständnis für die Leistung, wenn Sie einen einzelnen if vs ternären Operator verwenden.
Ich erstelle eine Wrapper-Instanz, in der ich ihre Variablen initialisiere. ZB unten:
public class MyWrapperClass{
public string sUserName;
public MyWrapperClass(){
this.sUserName = '';
}
}
Während ich nun die vom Back-End zurückgegebenen Werte den Wrapper-Variablen zuweise, verwende ich ein einzelnes if, um zu überprüfen, ob der vom Back-End zurückgegebene Wert nicht leer ist. Unten ist was ich mache:
if(String.isNotBlank(myObj.myField__c)){
myWrapperInstance.sUserName = myObj.myField__c;
}
Ich habe hier keine else-Bedingung, da ich die Variable bereits als leere Zeichenfolge initialisiert habe. Wenn daher kein Wert für das Feld vorhanden ist, enthält meine Variable eine leere Zeichenfolge.
Ich muss jedoch verstehen, ob es sinnvoll ist, Folgendes zu verwenden:
myWrapperInstance.sUserName = String.isNotBlank(myObj.myField__c) ? myObj.myField__c : '';
ODER
myWrapperInstance.sUserName = myObj.myField__c != null ? myObj.myField__c : '';
Ich brauche Hilfe, um zu verstehen, was aus Performance-Sicht besser ist.
Antworten
Diese Formen:
myWrapperInstance.sUserName = String.isNotBlank(myObj.myField__c) ? myObj.myField__c : myObj.myField__c;
und
myWrapperInstance.sUserName = myObj.myField__c != null ? myObj.myField__c : myObj.myField__c;
sind Äpfel zu Orangen. String.isNotBlank()sucht nicht nur nach null, sondern auch nach leeren Zeichenfolgen und Leerzeichen, was rechenintensiver ist als das Suchen nach null. Verwenden Sie diejenige, die Sie für Ihre spezifischen Anforderungen benötigen, da diese nicht der Leistung entsprechen.
Darüber hinaus diese beiden sollten optimiert werden entfernt , wie geschrieben , wenn der Apex - Compiler mäßig clever ist, weil der Vergleichsergebnisse in der gleichen Ausgabe. (Ich vermute jedoch, dass dies nur ein Fehler in Ihrem Beispiel ist).
Ob der ternäre Operator oder eine ifAnweisung schneller ist: Wie Derek F. kommentierte, spielt es keine Rolle. Die Auswirkungen auf die Leistung, falls vorhanden - und wenn der Apex-Compiler clever ist, sollte es überhaupt keine Unterschiede geben - werden sowohl vollständig von anderen Leistungsmerkmalen Ihrer Anwendung überschwemmt als auch undefiniert / Änderungen in zukünftigen Salesforce-Versionen unterliegen . Mach dir keine Sorgen.