2016-07-26 7 views
-4

Jeder weiß, dass Technologie heutzutage kostengünstig ist und viele von uns kümmern sich nicht wirklich darum. Also, nehmen Sie einen Blick auf diesen Codes:Welcher Code kostet mehr auf Leistungsniveau

Ansatz # 1

$Obj = new Obj(); 

if (!empty($val1)) { 
    $Obj->setVal1($val1); 
} 

if (!empty($val2)) { 
    $Obj->setVal2($val2); 
} 

if (!empty($val3)) { 
    $Obj->setVal3($val3); 
} 

if (!empty($valN)) { 
    $Obj->setValN($valN); 
} 

Ansatz # 2

if (!empty($var1) && !empty($var2) && !empty($var3) && !empty($varN)) { 
    $Obj = new Obj(); 

    if (!empty($val1)) { 
     $Obj->setVal1($val1); 
    } 

    if (!empty($val2)) { 
     $Obj->setVal2($val2); 
    } 

    if (!empty($val3)) { 
     $Obj->setVal3($val3); 
    } 

    if (!empty($valN)) { 
     $Obj->setValN($valN); 
    } 
} 

Im ersten Beispiel schaffen wir und Objekt und lassen Sie um, wenn keine der Werte existieren, in der zweiten überprüfen wir zuerst, ob die Werte vorhanden und nicht leer sind, und dann erstellen Sie das Objekt und legen Sie die Werte fest. Was wäre aus Ihrer Sicht die beste Lösung für das Leistungsniveau? Welchen würden Sie auf Ihre Codes schreiben?

Hinweis: N ist nicht unendlich

+4

laufen ein Benchmark –

+5

Warum Sie nicht über eine Leistung zu tun Analyse und sehen Sie selbst? –

+0

Sie sind nicht funktional gleichwertig. Und das ist so eine Mikrooptimierung, ich bin mir nicht sicher, ob ich mir deswegen Sorgen mache. – Doon

Antwort

0

, die auf ist abhängig, was Sie wollen, der erste Code wird Wert gesetzt, wenn sie nicht leer ist sogar tho‘ein anderer Wert könnte leer sein,

aber die Der zweite Code würde zuerst den gesamten Wert überprüfen, wenn also einer der Werte leer ist, wird er niemals Obj erzeugen.

das ist eine klare Wahl, wenn Sie denken, dass alle Wert wichtig und notwendig ist, dann gehen Sie mit dem zweiten Code, wenn es in Ordnung ist, einen anderen Wert leer zu lassen und jeden Wert zu aktualisieren, der nicht leer ist, gibt es keinen Punkt mit dem zweiten Code

2

Normalerweise ist es nicht Operationen wie empty() oder isset(), die Zeit verschwendet. Stattdessen führt eine höhere Speicherauslastung und Speicherleckage zu mehr GC-Operationen, new() führt eine Initialisierung durch, die Zeit benötigt, E/A-Vorgänge verursachen eine Verzögerung und , die ist, wo Sie Ihre Verbesserung tun sollten.

Es ist sehr sehr komplex sein kann, wenn Sie die Zeit Nutzung im Detail diskutieren wollen: während der Kompilierung, Laufzeit, ob der Code überhaupt läuft usw.

Verwandte Themen