Ich weiß, dass Sie PHP minimieren können , aber ich frage mich, ob es irgendeinen Grund gibt. PHP ist eine interpretierte Sprache und läuft daher etwas langsamer als eine kompilierte Sprache. Meine Frage ist: Würden Kunden eine sichtbare Geschwindigkeitsverbesserung beim Laden von Seiten und dergleichen sehen, wenn ich mein PHP minimieren würde?
Gibt es auch eine Möglichkeit, PHP oder ähnliches zu kompilieren?
Antworten:
PHP wird in Bytecode kompiliert, der dann auf etwas interpretiert wird, das einer VM ähnelt. Viele andere Skriptsprachen folgen demselben allgemeinen Prozess, einschließlich Perl und Ruby. Es ist nicht wirklich eine traditionell interpretierte Sprache wie zum Beispiel BASIC.
Es würde keine effektive Geschwindigkeitssteigerung geben, wenn Sie versuchen würden, die Quelle zu "minimieren". Sie würden eine erhebliche Steigerung erzielen, wenn Sie einen Bytecode-Cache wie APC verwenden .
Facebook hat einen Compiler namens HipHop eingeführt , der PHP-Quellen in C ++ - Code umwandelt. Rasmus Lerdorf, einer der großen PHP-Leute, hat Anfang dieses Jahres eine Präsentation für Digg gehalten , die die Leistungsverbesserungen von HipHop behandelt. Kurz gesagt, es ist nicht viel schneller als die Optimierung von Code und die Verwendung eines Bytecode-Cache. HipHop ist für die Mehrheit der Benutzer ein Overkill.
Facebook hat kürzlich auch HHVM vorgestellt , eine neue virtuelle Maschine, die auf der Arbeit von HipHop basiert. Es ist noch ziemlich neu und es ist nicht klar, ob es der Öffentlichkeit einen großen Leistungsschub bringen wird.
Bitte lesen Sie diese Präsentation vollständig durch , um sicherzustellen, dass sie ausdrücklich angegeben ist . Es werden zahlreiche Möglichkeiten aufgezeigt , wie Code mithilfe von Tools wie xdebug und xhprof , ebenfalls von Facebook, bewertet und profiliert und Engpässe identifiziert werden können .
quelle
Verzichten Sie auf die Idee, PHP zu minimieren, um einen Opcode-Cache wie
PHP Accelerator
oder zu verwendenAPC
.Oder so etwas wie
memcached
quelle
Mit etwas Umschreiben (kürzere Variablennamen) könnten Sie ein paar Bytes Speicher sparen, aber das ist auch selten von Bedeutung.
Ich entwerfe jedoch einige meiner Anwendungen so, dass Include-Skripte miteinander verknüpft werden können. Damit
php -w
kann es erheblich komprimiert werden, wodurch ein kleiner Geschwindigkeitsgewinn für den Skriptstart hinzugefügt wird. Auf einem Opcode-fähigen Server werden dadurch jedoch nur wenige Datei-Mtime-Checks gespeichert.quelle
Dies ist weniger eine Antwort als eine Werbung. Ich habe an einer PHP-Erweiterung gearbeitet, die Zend-Opcodes übersetzt, um sie auf einer VM mit statischer Typisierung auszuführen. Es beschleunigt keinen beliebigen PHP-Code. Sie können damit Code schreiben, der viel schneller ausgeführt wird als es normales PHP zulässt. Der Schlüssel hier ist die statische Eingabe. Auf einer modernen CPU frisst eine dynamische Sprache die Strafe für die Fehlvorhersage von Zweigen links und rechts. Die Tatsache, dass PHP-Arrays Hash-Tabellen sind, verursacht ebenfalls hohe Kosten: viele Fehlvorhersagen für Zweige, ineffiziente Verwendung des Caches, schlechtes Vorabrufen des Speichers und keinerlei SIMD-Optimierung. Insbesondere die Fehlvorhersage von Zweigen und Cache-Fehler sind für die heutigen Prozessoren eine Achillesferse. Meine kleine VM umgeht dieses Problem, indem sie statische Typen und ein C-Array anstelle einer Hash-Tabelle verwendet. Das Ergebnis läuft ungefähr zehnmal schneller. Dies verwendet die Bytecode-Interpretation. Die Erweiterung kann optional eine Funktion über gcc kompilieren. In diesem Fall erhalten Sie zwei- bis fünfmal mehr Geschwindigkeit.
Hier ist der Link für alle Interessierten:
https://github.com/chung-leong/qb/wiki
Auch hier ist die Erweiterung kein allgemeiner PHP-Beschleuniger. Sie müssen dafür spezifischen Code schreiben.
quelle
Es gibt PHP-Compiler ... eine Liste finden Sie in dieser vorherigen Frage . Aber (es sei denn, Sie haben die Größe von Facebook oder zielen darauf ab, dass Ihre Anwendung clientseitig ausgeführt wird), sind sie im Allgemeinen viel schwieriger als sie wert sind
Durch einfaches Zwischenspeichern von Opcodes erhalten Sie mehr Nutzen für den Aufwand. Oder profilieren Sie Ihren Code, um die Engpässe zu identifizieren, und optimieren Sie ihn anschließend.
quelle
Sie müssen PHP nicht minimieren. Installieren Sie einen Opcode-Cache, um eine bessere Leistung zu erzielen. Die ideale Lösung wäre jedoch, Ihr PHP auf die Version 5.5 oder höher zu aktualisieren, da die neueren Versionen standardmäßig über einen Opcode-Cache namens Zend Optimiser verfügen, der eine bessere Leistung aufweist als die anderen http://massivescale.blogspot.com/2013/06 /php-55-zend-optimiser-opcache-vs-xcache.html .
quelle
Ja, es gibt einen (nicht technischen) Punkt.
Ihr Hoster kann Ihren Code auf seinem Server ausspionieren. Wenn Sie es minimieren und hässlich machen, ist es für Spione schwieriger, Ihre Ideen zu stehlen.
Ein Grund für die Minimierung und Hässlichkeit von PHP kann der Spionageschutz sein. Ich denke, hässlicher Code sollte ein Schritt in einer automatischen Bereitstellung sein.
quelle