Geschwindigkeit C++ (CGI) vs. PHP
-
Um mir gleich mal den Wind aus den Segeln zu nehmen ;): Mein erster Post mag sich professionell angehört haben, ist aber nicht so gemeint :). Es handelt sich um kein kommerzielles Projekt, sondern um eins, das meine Freizeit etwas ausfüllen soll (zwischen Schule und Zivi liegt viel Zeit...). Mein Ziel ist ein Browserspiel zu programmieren (naja, ich versuch es wenigstens :)). Deshalb ist ein praktischer Einsatz auch nicht unbedingt meine Absicht. Da ich aber nichts von vornherein ausschließen wollte, möchte ich Geschwindigkeits-Aspekte gerne berücksichtigen (will heißen, Kosten und Zeit sind mir egal, da ich mich nicht bezahlen muß). Bleiben also 3 Möglichkeiten:
- C++ mit FastCGI
- C++ als Apache-Modul
- PHP
Wo liegen außer der zu investierenden Zeit Vor- und Nachteile?
Gruß
Fliegenpilz
P.S.: Trotzdem schon mal vielen Dank für die schnellen Antworten
-
wenn man unter dem apache mod_php bzw. mod_perl (ist schneller als php) beutzt, kommt man auf sehr gute resultate und sehr gute performance.
würde ich einer c/c++ applikation vorziehen. (perl, nicht php!)
-
Ich schreibe gerade selbst einen Chat in CGI-C++.
Die Datenbankabfragen sind etwas schneller.(Nicht der rede Wert)
Du musst dir erst alle Klassen selbst schreiben. Parser für einige Dinge, etc.
Die Verarbeitung ist aber Sauschnell.
Ich verwende die VBMCGI. Habe mir aber eine Session,MYSQL,Datenholder,File, und noch vieles mehr dazu geschrieben. Der Vorteil ist, daß man diese auch in anderen Programmen verwenden kann und sie nicht nur für das Web schreibt. Weiters kann man closed-Source schreiben. Geht mit PHP zwar auch aber die Programme kosten.
Man kann fast sofort WEBANWENDUNGEN schreiben wenn man C++ kann und muss nicht erst PHP lernen.
Jeder Entwickler hat sowieso sein eigenen Klassen bereit und die lassen sich verwenden.
Bei PHP muss immer das Script geparsed werden was Zeit kostet. Allerdings barucht der Aufruf des cgi-programmes auch Zeit die man sich bei PHP wieder spart.
Der Vorteil von Perl und PHP ist, daß er bereits viele Funktionen gibt.
-
Das wichtigste an Allem: Der Hoster muss das Hochladen/ausführen von eigenen CGI-Modulen schon unterstützen sonst hilft alles nix!
-junix
-
Original erstellt von junix:
**Das wichtigste an Allem: Der Hoster muss das Hochladen/ausführen von eigenen CGI-Modulen schon unterstützen sonst hilft alles nix!
**jo. und ich kenne noch keinen, der so nett ist.
-
Irgendwas sagt mir, das hat nix mit nettigkeit zu tun, volkard (o;
-junix
-
Original erstellt von Fliegenpilz:
Meine Frage ist nun, welche Lösung um wie viel schneller als die andere ist (ungefähr).wenn du eh von apache ausgehst, dann wohl php. wenn ich recht vertande habe, hat der php sauber integriert (in seinem prozess selber) und braucht nicht dauernd umzuschalten. mit dem zend optimizer sollte php auch nicht lahm sein. wird das programm größer, ist nach c++ umzusteigen. aber auch kaum wegen des speeds. mehr als faktor 2 traue ich c++ unter apache unter keiner ernsthaften anwendung zu. sondern, weil c++ destruktoren hat. su kannst aus der innigsten mitte deiner verschachtelten funktionen throw WRONG_PASSWORD machen, und nix der geschützt daten komt an, sondern nur dein fehlertext, aber der richig. mit php5 bald kannste vermutlich auch wieder php nehmen, das hat destruktoren (hoffenlich nicht pseudo-destruktoren wie jave).
top speed wirste erreichen, wenn du in c++ nen eigenen http-server baust und dem erlaubst, ohne taskwechsel die seiten aufzubauen und zu verschicken (mal davon ausgehend, daß zum lesen der seiten, weil im cache, kein passives warten nutwendig ist). müßtest auch den eingang zustandslos machen. oh, das ist gemein zu programmieren. mein tip: nimm doch nen langweiligen thread pro aufgerufener seite und dann kannste auch gleich apache nehmen und dann kannste auch php nehmen. php fühlt sich echt wohl im apache. (perl ürigens auch).
-
Original erstellt von junix:
**Irgendwas sagt mir, das hat nix mit nettigkeit zu tun, volkard (o;
**äh. jo. ausreichend geld tut es auch.
-
könnte man nicht viele Probleme der C++ CGIs dadurch lösen, dass man ein Backend schreibt, dass sich um die verschiedenen Resourcen (MySQL Anbindung etc.) kümmert, so dass die eigentliche CGI die aufgerufen wird nur an das Backend die Parameter übergibt. Dann wär auch IPC zB. deutlich leichter.
ab nach Webzeugs
-
Gibt's irgendwo gute Tutorials zu dem Thema wie ich C++-Programme über CGI laufen lassen kann und wie ich dann auf Post- oder Get-Variablen usw... zugreifen kann. Wie die Session-Verwaltung und das alles funktioniert!? Habe mit C++ bisher nur lokal aber noch nie im Netz gearbeitet.
MfGTobsen
-
Zugriff auf die CGI-Schnittstelle in C: http://www.pronix.de/C/standard_C/c_programmierung_27.shtml . Bibliotheken für C++ stehen hier im Thread weiter oben. Meines Wissens hat Sessionverwaltung nichts mit CGI zu tun, muß also komplett von Hand gebaut werden (oder irre ich mich?).
Gruß
Fliegenpilz
-
Original erstellt von volkard:**
Original erstellt von junix:
Das wichtigste an Allem: Der Hoster muss das Hochladen/ausführen von eigenen CGI-Modulen schon unterstützen sonst hilft alles nix!
**
jo. und ich kenne noch keinen, der so nett ist.Solange deine Sachen Privat und NonComercial sind, kein Problem bei www.prima.de :
- eigene Domain mit (unbegrenzt??) Subdomainen
- Subdomain unter prima.de ( heisst dann Sitename! )
- auf Wunsch Pseudo-Root-Rechner ( jail unter FreeBSD )
- VPN -> Homerechner über feste IP erreichbar
- feste IP connectiert auf Einwahlport oder VPN oder Pseudo-Root-Rechner
- SSH-Zugriff auf den Webserver
- Mail und News auch über UUCP
Man sieht: Geht alles!
Bis dann...
Peanutedit: am quoting gedreht!
[ Dieser Beitrag wurde am 26.05.2003 um 13:08 Uhr von Peanut editiert. ]
-
Meines wissens gibt es einen Zend Compiler, mit dem man PHP 4 Code schon vorcompilieren kann. Das wird zur Not bestimmt auch noch ein wenig an Speed rausholen.
-
Hast Du mal Servlets in Betracht gezogen ?
Wenn die Dinger erst mal geladen sind, und eine
gute JVM mit aggresivem JIT Compiler (IBM JVM
mit Server Einstellungen) verwendet wird,
ist das ganze auch richtig schnell...Stefan
(Die schnelle Servlet Engine natürlich nicht vergessen
- Tomcat 4.1.x oder was in der Richtung...)
-
Hmmm, bis jetzt noch nicht, momentan bevorzuge ich ein Apache-Modul. Wo finde ich denn gute Informationen zu Servlets?
-
1. JDK runterladen, installieren
2. Tomcat runterladen, installieren bzw auspacken
3. Google starten " Servlet java tutorial"
4. Tomcat Beispiele anschauen (im webapps/examples Verzeichniss)Wenns nicht weitergeht : ins Forum schreiben
MfG
Stefan
-
ich sage (ohne alls davor gelesen zu haben) c++ ist wesentlich schneller.
-
Gibt es denn so etwas wie objektive Benchmarks? Das, was ich auf mysql.de über Datenbankbenchmarks gelesen habe, macht mir keine großen Hoffnungen...
-
Original erstellt von Fliegenpilz:
Gibt es denn so etwas wie objektive Benchmarks? Das, was ich auf mysql.de über Datenbankbenchmarks gelesen habe, macht mir keine großen Hoffnungen...ne, wozu?
C++ hat ne schnellere laufzeit und ne hoehere ladezeit
du musst dir nur ueberlegen was deine seite machen soll: hast du lange laufzeiten? wenn ja, dann nimm C++, hast du kurze laufzeiten nimm PHP
-
Wenn ich das mit C++ als Apache-Modul programmiere, fallen doch die Ladezeiten weg. Wenn ich bei google nach Geschwindigkeitsvergleichen suche, werde ich nicht fündig, deshalb habe ich hier gefragt.