Seite 1 von 2

Performance von PHP vs. C++

Verfasst: 07.11.2007, 17:38
von Grillmeister
Hallo,

ich bin auf meinem Server mit der Performance von PHP-Scripten unzufrieden. Die Antwortzeiten, getestet mit https://www.html-world.de/tools/server.php liegen im Bereich von 2.5 Sekunden bei einfachen Scripten, eine Joomla-Installation z.B. ist noch langsamer.

Um die Performanceprobleme zu umgehen, habe ich mit eine einfache C++-CGI-Klasse gebastelt, und siehe da, die gleichen Programme laufen (inklusive MySQL-Zugriffen) unter C++/CGI in weniger als 0.5s.

Statische HTML-Seiten werden übrigens in ca. 0.2s ausgeliefert.

Mein Server ist ein Strato Highend-Server SR v2.6:
- Celeron 2.40GHz
- 80 GB HDD
- 512 MB RAM
- Suse 9.1
- Visas

Meine Frage ist jetzt: Was sind Eure Erfahrungen im Hinblick auf PHP-Performance? Lässt sich PHP so installieren und optimieren, dass es quasi gleich schnell läuft wie kompilierte C++-Programme?

Unabhängig davon werde ich mir bald einen neuen Server holen, der den Anforderungen eher gewachsen ist. Trotzdem würden mich eure Erfahrungen interessieren, ob es Sinn macht, die am häufigsten aufgerufenen Seiten in C++ zu programmieren. Der Nachteil ist nämlich der höhere Wartungsaufwand für diese Programme.

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 07.11.2007, 18:03
von Michael
Wie hast Du denn PHP eingebunden? Als Modul oder extern???

Wenn extern, dann ist die Antwortzeit kein Wunder. Anderenfalls solltest Du mal prüfen, was sonst noch so auf dem Server los ist. Würde Dir mal phpsysinfo empfehlen.

Gruß
Michael

Verfasst: 07.11.2007, 18:41
von Grillmeister
Danke für die Antwort.

PHP läuft als suPHP, also letztlich als CGI. Meinst du das mit extern?

phpsysinfo habe ich mal ausprobiert, es liefert aber eigentlich keine neuen Informationen. Der Arbeitsspeicher ist ziemlich voll ;-)

Verfasst: 07.11.2007, 23:22
von grossy
wenn PHP als cgi läuft, dann ist das "extern". Man kann php auch in den Apache als Modul reininstallieren, nennt sich dann mod_php. Wenn php extern läuft, wird das Script jedes Mal vor der Ausführung Kompaliert. Bei mod_php bleibt das Komplierte Script im Cache. Das dürfte damit an c++ rankommen. Ich weis aber nicht genau, wie das mit dem Cache ist. Es gibt da nämlich noch einen Zend-Optimizer, der soll auch noch was bringen. Scheint also noch Potential zu geben.

Verfasst: 08.11.2007, 01:09
von Grillmeister
Danke für den Tipp! Ich hab jetzt suPHP auf nem VHost testweise deaktiviert, da ists gleich mal um Faktor 10 schneller und kann damit glatt mit C++ mithalten. Hätte ich nicht gedacht, dass das soviel ausmacht.

Nächste Frage: Hat jemand einen Link zur Hand, worauf in Punkto Sicherheit besonders zu achten ist, wenn man suPHP deaktiviert hat? Bin jetzt doch am überlegen, das auf weiteren VHosts abzuschalten.

Verfasst: 08.11.2007, 03:02
von w3news
Wenn ich mich nicht total verhaue, sollte rein theoretisch PHP (fast) genauso schnell sein wie C++! Soviel ich weiß ist PHP entweder ganz oder zu mindesten teilweise von C++ abgeleitet. ;)

Verfasst: 08.11.2007, 06:50
von MBDealer
w3news hat geschrieben:Wenn ich mich nicht total verhaue, sollte rein theoretisch PHP (fast) genauso schnell sein wie C++! Soviel ich weiß ist PHP entweder ganz oder zu mindesten teilweise von C++ abgeleitet. ;)
Die Syntax von PHP ähnelt der Syntax von C++ aber an die Geschwindigkeit von C++ kommt PHP noch lange nicht ran. PHP Skripte werden vom Interpreter zur Laufzeit übersetzt (das nimmt "viel" Zeit in Anspruch) im Gegensatz wird bei C++ der Quellcode vorher in die Maschinensprache übersetzt.

Verfasst: 10.11.2007, 11:17
von Dante
C++ wird grundsätzlich immer schneller sein als PHP, da PHP wie schon angesprochen nur interpretiert wird.

PHP kannst du aber wesentlich schneller bekommen, in dem du es als mod_php laufen lässt und den eAccelerator dazu installierst.

Verfasst: 10.11.2007, 11:22
von Airport1
Auch nicht unerwaehnt bleiben sollte, dass es nicht allein nur auf die Sprache ankommt, sondern auch WIE man etwas codet. So kann man bspw. 3fach verschachtelte Schleifen bauen, wo nicht einmal eine einfache noetig waere. Oder man fraegt 10mal die DB ab obwohl es 0mal noetig waere. Usw. etc. pp. ff.

Statische Seiten in 0.2s? U.U. nicht schnell genug - da koennte es noch Optimierungspotenzial geben ;-)

Verfasst: 10.11.2007, 22:31
von everflux
Dazu gibts dann noch die verschiedensten Lösungen (opcode-caches, db-caches, ...) um ein System zu optimieren.
Je nachdem was du vor hast, könnte es mit dem ram bei dir eng werden.

Verfasst: 10.11.2007, 22:54
von Michael
Bei vergleichbarem Code ist C/C++ immer "ein wenig" schneller als PHP. Besonders wenn "VIEL" Speicher in kleinen Blöcken reserviert werden muss, kommt PHP nicht mehr mit.
PHP ist halt nur für die Ausführung kurzer Skripte geeignet. Bei einer Laufzeit einer PHP Anwendung über mehrere Wochen (z.B. Als Desktop Anwendung mit gtk) läuft hier schnell der Speicher voll, da der Garbage Collector nicht so schlau ist wie der einer Java VM. :-(

Trotzdem, bei Webanwendungen ist PHP eine gute Wahl die hier ihre Stärken ausspielen kann.

Re: Performance von PHP vs. C++

Verfasst: 21.11.2007, 20:43
von zeta24
Grillmeister hat geschrieben:...ich bin auf meinem Server mit der Performance von PHP-Scripten unzufrieden.
Ich will Dir nicht zu nahe treten, aber in den meisten Fällen liegen Performence-Probleme mit PHP an schlampiger Programmierung.

Re: Performance von PHP vs. C++

Verfasst: 21.11.2007, 23:36
von Grillmeister
zeta24 hat geschrieben:
Grillmeister hat geschrieben:...ich bin auf meinem Server mit der Performance von PHP-Scripten unzufrieden.
Ich will Dir nicht zu nahe treten, aber in den meisten Fällen liegen Performence-Probleme mit PHP an schlampiger Programmierung.
Da hast du sicher Recht. Aber wenn selbst ein

Code: Alles auswählen

<?PHP
echo 'Hallo Welt';
?>
fast zwei Sekunden braucht, bis der Server die Antwort ausliefert, liegt es wohl eher am Server. Ich habe mittlerweile einige Optimierungen vorgenommen und komme jetzt bei einfachen Scripten oder meinem CMS auf Werte um 0.2s. Damit kann ich gut leben.

Joomla z.B. ist immer noch viel zu langsam, um es produktiv einzusetzen.

Re: Performance von PHP vs. C++

Verfasst: 22.11.2007, 00:55
von zeta24
Grillmeister hat geschrieben:Hallo Welt...fast zwei Sekunden...
OK. das ist hart. Könnte das am Provider liegen?

Verfasst: 22.11.2007, 01:03
von everflux
Es gibt doch irgendwelche Scripte, die server load etc. auslesen (z.b. phpsysinfo) - was kommt denn dabei raus?