C++ auf dem Apache

Bash, Shell, PHP, Python, Perl, CGI
netsrac
Posts: 24
Joined: 2004-01-10 23:56

C++ auf dem Apache

Post by netsrac »

Hallo,
hat von euch schonmal jemand Erfahrung mit C++ Programmen auf einem Apache Server sammeln können? Ich würde eventuell von PHP auf C++ umschwenken wegen der Performance. Aber halt nur, wenn mir jemand sagt, das es wirklich schneller ist.

Ich hatte damals mal einen kleinen Test gemacht und C++ gegen PHP getestet. Allerdings hatte ich damals C++ in einem passthru() auch nur aus dem PHP aufgerufen und mir die beiden Identischen funktionalitäten im Profiler geloggt.

Damals hatte ich gesehen, das Rechenoperationen in C++ deutlich schneller waren als in PHP. Also z.B. ein simples for(i=0;i<100000;i++){} lief da bei c++ etwa mit 10% der laufzeit.

Nun ist es ja nur Sinnvoller, C++ auch wirklich als CGI einzubinden um nicht jedesmal eine Instanz meines C++ programmes zu starten.
Ist doch so richtig oder???

Erfahrungen beziehen sich für mich größtenteils auf Performance, MySQL-Geschwindigkeiten (also zugriff und verbindung) aber auch ob es eventuelle Probleme geben könnte, wenn ich mein PHP-Portal modul für modul nach c++ portiere.

Danke
Grüße
Carsten
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: C++ auf dem Apache

Post by captaincrunch »

C/C++ sind halt richtige Programmiersprachen. ;)
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
netsrac
Posts: 24
Joined: 2004-01-10 23:56

Re: C++ auf dem Apache

Post by netsrac »

CaptainCrunch wrote:C/C++ sind halt richtige Programmiersprachen. ;)
Ack. Aber das wußte ich bereits. ;) Oder wolltest du mir damit sagen, das das Topic hier Script.... heißt?

Wichtiger ist Momentan für mich die frage, ob ein c++ Prog im cgi-bin ordner bei jedem aufruf instantiiert wird oder ob der apache einen cache hat, in dem er solche programme hällt, damit sie nicht für jeden request gestartet werden müssen...

Also quasi die Gretchen... ähm... Performancefrage... :D
steffz
Posts: 84
Joined: 2003-04-13 13:07
Location: Hamburg

Re: C++ auf dem Apache

Post by steffz »

Von einem Caching weiß ich nichts. Ich glaube aber ohnehin kaum, dass du merkliche Performanceverbesserungen erzielen kannst. Das, was du durch C an Geschwindigkeit gewinnst, dürfte dank CGI wieder verloren gehen.
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: C++ auf dem Apache

Post by captaincrunch »

Ich wage mich jetzt einfach mal ganz weit vor, und behaupte, dass es je nach "Anwendung" schon ein Performancegewinn sein könnte.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
outofbound
Posts: 470
Joined: 2002-05-14 13:02
Location: Karlsruhe City

Re: C++ auf dem Apache

Post by outofbound »

Ne, da wird soweit nichts gecacht.

Sinnvoll kann es aber durchaus sein, wenn du PHP durch C ersetzen willst, da kannst
du bei durchdachter Programmierung einiges rausholen.
Du verlierst halt einiges an Portierbarkeit, weil du halt jedes mal compilen musst, wenn du
deinen Code allerdings sauber schreibst, und das executeable ziemlich klein bleibt, dürftest du
einiges an Performance dazu gewinnen.

Gruss,

Out
henock
Posts: 17
Joined: 2002-07-12 15:11

Re: C++ auf dem Apache

Post by henock »

Moin,

also zum einsatz von C++ als Programiersprache für Webanwendungen kann ich nicht viel sagen. Im Prinzip geht es hier jedoch um den Einsatz einer Webanwendung, welche in einer "normalen" Hochsprache programmiert wird und dann als binary (z.B.: als CGI) auf dem Server ausgeführt wird. Und dazu kann ich etwas sagen :-D
Ich habe mal vor einiger Zeit eine Webanwendung für Linux mit Kylix II Prof. entwickelt. Das Executable alleine betrachtet (also der eigentliche Programmablauf) ist natürlich affenartig schnell gewesen, schlug PHP usw. um Längen. Ist ja auch nicht weiter verwunderlich, das Programm lag ja als 32Bit native-code executable vor. NUR (und das ist der Haken), die einzelnen Aufrufe ("Klicks") dauerten recht lange, da das Programm als CGI vorlag. Da kommt dann das Ladezeitverhalten voll zum Tragen (wie oben bereits angesprochen).
Ein Ausweg ist dann das Programmieren eines Server-Moduls (welches dann also persistent im Webserver vorliegt), z.B.: schreiben eines Apache DSO. Hier wird es dann aber ohne ein vernünftiges Framework sehr haarig, da man sich sonst z.B.: nur auf die API eines WS einschiesst und das Endprodukt dann hinterher nur sehr schwer zu portieren ist.

Lange Rede, kurzer Sinn: Wenn Native-Code, dann am besten als WS-Modul und auch am besten nur mit einem Framework, welches einem die APIs der verschiedenen Webserver abstrahiert (wies es z.B.: bei Kylix der Fall war/ist (ist nun auch schon ne ganze Zeit her)).
Alternativ müsste man sich mal das Laufzeitverhalten eines CGIs in Verbindung mit FastCGI ansehen.
majortermi
Userprojekt
Userprojekt
Posts: 916
Joined: 2002-06-17 16:09

Re: C++ auf dem Apache

Post by majortermi »

Wenn es wirklich auf die Performance ankommt, ist sicherlich die effektivste Möglichkeit die Funktionalität direkt in einem Apache-Modul abzubilden.

Ich würde dazu so vorgehen, dass ich die eigentliche Funktionalität in einer C++-Library schreibe, die ich mit einem C-Interface ausstatte. Im eigentlichen Apache-Modul (das sich am einfachsten mit C realisieren lässt), würde ich dann nur noch die entsprechenden Funktionen der Library aufrufen.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...