Beiträge mit dem Stichwort ‘Zeit’

PHP: Warum count() im Schleifenkopf langsam ist und … [UPDATE]

Veröffentlicht am 16. August 2010 um 23:41 by Fabian Martin Permalink

In den Kommentaren des ursprünglichen Artikels wurde zu Recht beanstandet, das der Vergleich zwischen for und foreach, so wie er dort beschrieben war, nicht richtig ist, da bei foreach Werte abgefragt werden, die bei den for Schleifen fehlten. Dieser korrigierte Artikel, behebt den Fehler.

Der Artikel wurde zusätzlich mit einem Kommentar zum Thema Optimierung versehen.

Vor ein paar Tagen berichtete ragtek davon, dass count() im Schleifenkopf unschön und ineffizient ist. Beidem kann ich nur zustimmen.

Aber warum ist das so?

Die Erklärung dazu ist einfach. Bei jedem Durchlauf wird count() aufgerufen und darüber die Anzahl der Elemente ermittelt. Überprüfen kann man das Verhalten mit einem kleinen Code Snippet:

<?php
class ArrayTest implements Countable
{
	public $intCountCall = 0;

	public function count()
	{
		$this->intCountCall++;
		return 100000;
	}
}

$objArrayTest = new ArrayTest();
for ($intI = 0; $intI < count($objArrayTest); $intI++)
{

}
echo($objArrayTest->intCountCall . " Aufrufe von count()");

Ergebnis:

100001 Aufrufe von count()

Bei näherer Betrachtung scheint es also logisch, dass diese Variante langsamer ist, als wenn man count() einmal aufruft und den Wert zwischenspeichert.

Ist foreach schneller?
In den Kommentaren wird erwähnt, dass die Verwendung von for und count() unnötig ist, da es ja foreach gibt. Aber ist es auch schneller?
weiterlesen »

Arbeiten nach dem Scotty Prinzip

Veröffentlicht am 30. April 2010 um 21:24 by Fabian Martin Permalink

Bei der Arbeit eines Softwareentwicklers ist nichts wichtiger wie das Einhalten der Termine. Schafft er das nicht, wird der Kunde schnell säuerlich.

Wie ermittelt man aber Termine die man einhalten kann? Ich nutze dafür gern das Scotty Prinzip, benannt nach seinem Erfinder Montgomery Scott von der USS Enterprise (ja, Star Trek).

Man schätzt hierzu die Zeit ab die man wirklich braucht. Je länger man als Softwareentwickler arbeitet, desto besser wird man. Auf diese Zeit legt man nochmal 25% bis 50% drauf. Die daraus resultierende Zeit kommuniziert man gegenüber dem Kunden. Ist die genannte Zeit zu lang, kann man die Zeitspanne reduzieren bis alle zufrieden sind. Aber immer darauf achten das man die wirklich benötigte Zeit nicht unterbietet.

Im Idealfall seit ihr vor dem genannten Endzeitpunkt fertig und könnt dem Kunden das Ergebnis übergeben. Wenn ihr es an diesem Punkt geschickt macht, vermittelt ihr dem Kunden das Gefühl besonders wichtig zu sein, und ihr euch wegen ihm besonders angestrengt habt.