Geschwindigkeit C++ (CGI) vs. PHP



  • Guten Tag!

    Ich beabsichtige eine Web-Anwendung mit mySQL-Datenbank-Anbindung zu schreiben. Zur Debatte stehen eine Lösung in C++ über die CGI-Schnittstelle oder die Realisation über PHP (unter mod_php mit Apache laufend). Meine Frage ist nun, welche Lösung um wie viel schneller als die andere ist (ungefähr). Oder gibt es noch andere Möglichkeiten, beispielsweise alles, was schnell sein muß, als PHP-Modul in C++ zu schreiben und die Vorteile von PHP trotzdem auszunutzen? Und wo wir gerade schon beim Thema sind, wo gibt es gute CGI-Bibliotheken für C++?

    Gruß

    Fliegenpilz



  • ICh weiß zwar jetzt nicht was wieviel schneller ist, aber bei einer solchen Anwendung kommt es doch nicht so sehr auf Geschwindigkeit an.. was bringts dir wenn der Server die Sache in 0.01 Sekunden berechnet hat anstatt in 0.1, dann aber die Internet-Verbindung 10 Sekunden braucht um die Sachen runterzuladen? Nimm das was dir besser gefällt.



  • Original erstellt von crass:
    ICh weiß zwar jetzt nicht was wieviel schneller ist, aber bei einer solchen Anwendung kommt es doch nicht so sehr auf Geschwindigkeit an.. was bringts dir wenn der Server die Sache in 0.01 Sekunden berechnet hat anstatt in 0.1, dann aber die Internet-Verbindung 10 Sekunden braucht um die Sachen runterzuladen? Nimm das was dir besser gefällt.

    Entlastung des Servers ? Weniger Kosten ? Mehr Benutzerzugriffe möglich ? Höhere Skalierbarkeit ?

    Ein Arbeitskollege hat's mit CGI gemacht und es war sauschnell, PHP ist (so meine ich) auch wie PERL eine Intepreter Sprache, die noch zusätzliche Performance fressen würde... also haste da schonmal ne Spaßbremse 😃

    [ Dieser Beitrag wurde am 23.05.2003 um 16:50 Uhr von Winn editiert. ]



  • Du kannst das nicht vergleichen! PHP läuft im Apache und kann so z.B. Datenbankverbindungen offen halten, C++-CGI-Apps. müssen sie jeweils neu herstellen...

    Wenn überhaupt muss du C++FastCGI verwenden oder die App. als Apache-Modul entwerfen. Je nach komplexität erreichst du bei FastCGI ab Faktor 2. Zur Modul-Variante habe ich keinen Vergleich! Evtl. solltest du dir mal Moto angucken: Interpretiert entwickeln und dann zum Apache-Modul kompilieren. Habe ich keine erfahrungen mit, klingt aber gut!


  • Mod

    kommt alles drauf an:

    ist es eine seite die sehr lange laufzeit haben wird - dann rentiert sich C++ uU schon.
    wird die meiste zeit auf die DB gewartet, ist C++ nicht sehr sinnvoll.

    Mit C++ steigen die entwicklungskosten + zeit drastisch an - bei PHP ist beides gering.

    Gute libs fuer C++ sind uA
    CGIXX
    und
    CGICC

    wenn mit einem template system gearbeitet werden soll, bietet sich bei PHP smarty an - fuer C++ kenne ich nur http://www.vbmcgi.org/ - das ist allerdings ne eigene CGI Library

    du musst genauer sagen was die anforderungen sind - sonst kann man die frage schwer beantworten...



  • 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.
    MfG

    Tobsen



  • 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...
    Peanut

    edit: 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?


Anmelden zum Antworten