Rachus: Geschwindigkeitsvorteil von lokalen Variablen

Hallo,

hoffentlich geht das OK, dass ich ein neues Thema aufmache, aber ich habe da eine neue Frage:
Bringt es einen Geschwindigkeitsvorteil, wenn ich eine lokale Variable statt einer globalen Variable oder eines Attributs nutze?

Um meine Frage zu verdeutlichen:

class example  
{  
	private $variable;  
	  
	public function __construct($s)  
	{  
		$this->variable=$s;  
	}  
	  
	public function test1($i)  
	{  
		for (; $i>0; --$i)  
		{  
			echo $this->variable;  
		}  
	}  
	  
	public function test2($i)  
	{  
		$lokal=$this->variable;  
		  
		for (; $i>0; --$i)  
		{  
			echo $lokal;  
		}  
	}  
}

Ist in dieser Klasse für $i>2 die Methode test1 oder test2 schneller?
Ich habe schon versucht, mit microtime die Zeit zu berechnen, allerdings schwanken die Ergebnisse sehr stark.

Auf die Idee, kam ich, weil es in JavaScript so ist, dass man häufig benutzte Variablen lokal haben sollte, da der Zugriff auf globale Variablen länger dauert.

Einen schönen Abend

Rachus

  1. Hi!

    Bringt es einen Geschwindigkeitsvorteil, wenn ich eine lokale Variable statt einer globalen Variable oder eines Attributs nutze?

    Keinen der dir auch nur annähernd einen Nutzen bringen wird.

    Ist in dieser Klasse für $i>2 die Methode test1 oder test2 schneller?
    Ich habe schon versucht, mit microtime die Zeit zu berechnen, allerdings schwanken die Ergebnisse sehr stark.

    Ja, geht im Grundrauschen unter. Die übliche Form bei solchen Messungen ist, sie in einer Schleife mit sehr vielen Wiederholungen laufen zu lassen. Dieser Test bringt dann meistens einen sichtbaren Unterschied. Aber wenn man es genau nimmt, sieht man auch, wieviele dieser Operationen nötig sind, um einen spürbares Unterschied zu merken. Wenn in der Praxis wirklich so viele Operationen vorkommen, braucht man meist auch Daten in gleicher Größenordnung, und deren Verarbeitung oder Transfer nimmt einen wesentlich höheren Zeitraum in Anspruch, über den man sich lohnenswertere Gedanken machen sollte.

    Auf die Idee, kam ich, weil es in JavaScript so ist, dass man häufig benutzte Variablen lokal haben sollte, da der Zugriff auf globale Variablen länger dauert.

    Auch da: Was bringts? Viele Wiederholungen auf langsamen Rechnern machen sich vielleicht bemerkbar. Wenige Zugriffe sind meist nicht die Mühe der Optimierung Wert.

    Lo!

    1. Hallo,

      gut, dann habe ich wieder eine Sache weniger zu beachten.

      Wiedermal: Dankeschön!

      Rachus