Matti Mäkitalo: Performance nach Lesbarkeitsoptimierung

Beitrag lesen

Hi,

Variante B

if(bedingung1 && bedingung2) {

...
}


>   
> Zusätzlich lagere ich komplexe und wiederkehrende Prüfungen auch gern in eigene Funktionen aus:  
>   
> ~~~php

if(pruefe_bedingungen(bedingung1, bedingung2)) {  

> 	...  
> }  
> function pruefe_bedingungen(bedingung1, bedingung2) {  
> 	if(bedingung1) {  
> 		if(bedingung2) {  
> 			return true;  
> 		}  
> 	}  
> 	return false;	  
> }  
> 

Dies hat zur Folge, dass die Ausführungszeit sich _verdreifacht_. Ok, ich habe dadurch eine zusätzliche if-Abfrage und einen zusätzlichen Funktionsaufruf eingebaut, aber dass die Perfomance derart betroffen ist, betrübt mich. Ich gewinne grade den Eindruck, dass meine Optimierungen zur Lesbarkeit und Wartbarkeit des Codes immer mit Performance-Einbußen einhergehen könnten. Und auf meine Intuition bezüglich der Perfomance kann ich mich auch nicht verlassen.

Unabhängig von dem, was molily sagt: in deiner neuen Version müssen auf jedenfall beide Bedingungen ausgewertet werden, bevor die Funktion aufgerufen werden kann. Bei Version B sollte m.W. bedingung2 nicht ausgewertet werden, wenn bedingung1 false-ish ist.

Version A und B sollten gleich sein (zumindest von den Nebeneffekten her). Die Unterschiede liegen wohl irgendwo im Interpreter.

Bis die Tage,
Matti