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 »
Tags: Algorithmus, Array, Iterator, PHP, Schleife, Schleifen, Schleifenkopf, Zeit
Veröffentlicht in PHP |
1 Kommentar »
Veröffentlicht am 12. Juli 2010 um 16:45 by Fabian Martin Permalink
Sind die meisten Blogs zum Thema PHP sehr kurzweilig und mit wenigen Beiträgen gefüllt, hat es Michael mit seinem Blog in nur einem Jahr auf über 140 Artikel gebracht.
Zu diesem Ergebnis möchte ich ihm herzlichst gratulieren und hoffe die Zahl der Artikel und Wettbewerbe werden bis zum zweiten Geburtstag weiter in diesem Tempo wachsen.
Wer gratulieren und etwas abgreifen möchte, sollte nicht zögern und dort einen Kommentar hinterlassen. Ihr nehmt dann automatisch an einer Verlosung mit vielen attraktiven Preisen teil. Vergesst aber nicht, dort im Blog zu stöbern. Ihr werdet dabei sicher einige interessante Artikel entdecken.
Tags: Blog, Geburtstag, Gewinnspiel, PHP, Verlosung, Wettbewerb
Veröffentlicht in PHP |
Keine Kommentare »
Veröffentlicht am 10. Juli 2010 um 07:37 by Fabian Martin Permalink
Vor etwa 2 Wochen hat der PHP Gangsta zu einem neuen Wettbewerb aufgerufen. Es sollen Spielpläne nach einem bestimmten Schema errechnet werden.
Folgende Regeln sind zu beachten:
- Die Anzahl der Spieler muss gerade sein
- Es gibt X/2 Bretter und Runden (bei 20 Spielern gibt es 10 Bretter die an 10 Runden bespielt werden)
- Jede Spielpaarung darf nur einmal vorkommen
- Jeder Spieler darf nur einmal in einer Runde und an einem Brett spielen (ähnlich Sodoku)
Wenn ihr euch den kompletten Beitrag anseht, findet ihr meine Lösung. Die Berechnung dauert zwischen 3 und 300 Sekunden, und hängt davon ab, wie gut der Zufall mitspielt. Wer das ganze gleich mal testen möchte, kann eines der Ausgabeskripte nehmen, die ihr unter dem Algorithmus findet.
Schaut euch den Code einmal an, vielleicht bekommt ihr ja Ideen für einen eigenen Algorithmus. Noch habt ihr Gelegenheit daran teilzunehmen, denn der PHP Gangsta hat seine Lösung noch nicht veröffentlicht.
weiterlesen »
Tags: Algorithmus, PHP, Spiel, Spielplan, Wettbewerb
Veröffentlicht in PHP |
4 Kommentare »
Veröffentlicht am 18. Juni 2010 um 23:44 by Fabian Martin Permalink
Wer derzeit versucht den Zend Debugger über die Update Seite zu installieren, wird das Problem bereits bemerkt haben. Es funktioniert nicht.
Scheinbar haben sich vor einiger Zeit die Dateinamen/Versionen geändert, aber es wurde versäumt die Update Seite zu kontrollieren. Während der Installation versucht Eclipse Dateien herunterzuladen die es auf dem Server nicht (mehr) gibt.
Was kann man also machen?
Die Lösung des Problems ist eigentlich recht einfach. Das einzige was wir hierzu benötigen ist ein Apache Server mit aktiven mod_rewrite, ein Packprogramm und ein Texteditor.
Speichert die content.jar der Update Seite auf eurem PC und entpackt den Inhalt in einen Ordner eurer Wahl. Es sollte jeder handelsübliche Packer, der das ZIP Format versteht, möglich sein.
In dem Zielordner sollte sich jetzt eine content.xml befinden. Öffnet diese mit einem Textprogramm und ersetzt alle Vorkommnisse von 20091116 durch 20091124. Packt die content.xml nun wieder in eine ZIP Datei und nennt diese content.jar.
Erstellt eine .htaccess und fügt folgenden Inhalt ein:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* http://downloads.zend.com/pdt/$0 [L]
Ihr habt jetzt eine .htaccess die jede Anfrage an eine nicht existierende Datei an die offizielle Update Seite weiterreicht.
Legt beide Dateien nun in ein Verzeichnis unterhalb eures Apache Web Roots und tragt die URL als Update Seite bei eclipse ein.
Ihr könnt nun ohne größere Schwierigkeiten den Zend Debugger installieren. Wer keine Lust hat die Änderungen selbst durchzuführen, oder den Text durchzulesen, der kann sich die geänderten Dateien auch herunterladen, oder er trägt http://a2.localdev.de/zend/ als Update Seite ein.
Downloads:
Tags: Apache, Bug, debugger, Eclipse, PDT, PHP, zend
Veröffentlicht in PHP, Software |
1 Kommentar »
Veröffentlicht am 10. Juni 2010 um 13:26 by Fabian Martin Permalink
Wer derzeit das neue PDT Paket testet, wird vielleicht unter dem gleichen Problem leiden. Autocomplete will nicht richtig funktionieren. Ich drücke STRG+Leertaste und kriege nur eine leere Liste.
Sascha hat in seinem Software-Entwickler Blog eine Lösung veröffentlicht, mit der man das Problem beheben kann. Wie jedoch dem verlinkten Beitrag im Zend Forum zu entnehmen ist, klappt das nicht bei jedem.
Links:
Tags: autocomplete, Eclipse, helios, PDT, PHP, zend, Zend Studio
Veröffentlicht in PHP, Software |
Keine Kommentare »