kostenloser Webspace werbefrei: lima-city


Webentwicklung in C++/Perl (Allgemein)

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Ich höre immer wieder, dass die softwaretechnisch hochwertigsten Websprojekte mit C++/Perl geschrieben sind und der enorme Geschwindigkeitsvorteil, der sich davon versprochen wird, macht es nun auch für mich interessant. Ich frage mich nun allerdings, wie darf ich mir die Arbeit damit vorstellen ? Programmiere ich zuerst meinen eigenen Apache mit C++, der dann Perl-Skripte ausführt ? Oder gibt es ein Modul, ähnlich wie CGI, dass dann meine *.cpp-Dateien ausführt ?

    Wie schwer ist der Umstieg von der PHP-Entwicklung auf diese Programmiersprachen ?
    Und wäre eine Anwendung auf Lima möglich ?

    Ich frage, weil ich derzeit überlege, meine künftigen Projekte darauf umzustellen.

    Liebe Grüße
    - VampireSilence
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. CGI ist nicht Perl-Spezifisch, sondern kann mit praktisch jeder Programmiersprache verwendet werden. Somit auch C++.

    In der UNIX-Welt gibt es die so genannte Shebang-Zeile. Für Perl sieht die zum Beispiel so aus:
    #!/usr/bin/perl

    Wenn jetzt eine Web-Ressource angefordet wird und diese Web-Ressource sich im CGI-Bin befindet, dann schaut der Webserver, ob die Datei eine Shebang Zeile besitzt und führt dann die Datei mit dem Interpreter aus, der dort notiert ist.
    Handelt es sich bei der Web-Ressource um eine ausführbare Datei (C++ Programm), so kann diese direkt ausgeführt werden. Statt Commandozeilenparameter(?) bekommt das Programm dann vom Webserver die Umgebungsvariablen für den HTTP Request übergeben. (So genau weiß ich das auch nicht, da ich es noch nicht ausprobiert habe.)

    PHP ist auf Webprogrammierung spezialisiert und es ist daher deutlich bequemer damit solche Projekte aufzuziehen.
  4. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Klar ist es bequemer, aber zum einen Suche ich Herausforderungen, zum Anderen reizt mich wie gesagt die Geschwindigkeit.

    Also soweit ich dich verstanden habe, bedeutet das also für mich, dass ich gewöhnliche *.cpp-Dateien in meinen "cgi-bin"-Ordner packe, sie wie in Perl mit der Shebang-Zeile versehe und einfach ausführe, richtig ? Der Server würde also bei einem Aufruf á la "http://localhost/index.cpp" diese Datei im Ordner "cgi-bin" ausfindig machen und dessen Ergebnis dem User als Antwort senden ?

    Und darüber hinaus denke ich, dass Lima einen solchen Interpreter dann aus Sicherheitsgründen nicht besitzen wird, oder ? (Edit: Zumal ich ya nichtmal einen "cgi-bin"-Ordner besitze.)

    Liebe Grüße
    - VampireSilence

    Beitrag zuletzt geändert: 18.10.2009 13:28:42 von vampiresilence
  5. Nein, Lima bietet dir nicht die Möglichkeit Scripte über CGI auszuführen.

    Aber wofür brauchst du das überhaupt? Das ist eigentlich nur wirklich sinnvoll, wenn du die Geschwindigkeit wirklich brauchst. Also wenn du zum Beispiel ein sehr gut besuchtes Browsergame hast, bei dem im Hintergrund irgendwelche hochkomplizierten Sachen berechnet werden müssen und das auch noch schnell. Allgemein solltest du mit dem Speed von PHP klar kommen, insbesondere, wenn du den Bytecode cachst :)
  6. vampiresilence schrieb:
    Also soweit ich dich verstanden habe, bedeutet das also für mich, dass ich gewöhnliche *.cpp-Dateien in meinen "cgi-bin"-Ordner packe, sie wie in Perl mit der Shebang-Zeile versehe und einfach ausführe, richtig ?

    Nein. Du musst die compilierten Programme in den cgi-bin packen und nicht den C++-Quelltext. C++ ist schließlich keine Scriptsprache.
    [/quote]
  7. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Ok, danke damit wäre dann eigtl alles gesagt. Wie das dann konkret programmiert wird, suche ich mir in Tutorials zusammen.

    @nikic
    Ich sehe einfach keinen Sinn darin, Kapazitäten zu verschwenden. Sonst nichts. :)

    Liebe Grüße
    - VampireSilence

    Beitrag zuletzt geändert: 18.10.2009 14:51:00 von vampiresilence
  8. vampiresilence schrieb:
    Ok, danke damit wäre dann eigtl alles gesagt. Wie das dann konkret programmiert wird, suche ich mir in Tutorials zusammen.

    @nikic
    Ich sehe einfach keinen Sinn darin, Kapazitäten zu verschwenden. Sonst nichts. :)

    Liebe Grüße
    - VampireSilence


    Naja, das würde ich mir an deiner Stelle nochmal überlegen:
    Kapazität 1: CPU + RAM + HDD + ...
    Kapazität 2: Zeit

    Wenn du kein riesiges Projekt (mit riesig meine ich jetzt nicht diese zehntausend User, die sowieso keinen interessieren, sondern in größerem Maßstab) hast, dann ist der Zeitaufwand ganz sicherlich nicht proportional zu der heraus geholten Performance und Ressourcenschonung.
  9. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Das ist Ansichtssache. Wenn ich nen Tick von 104 auf 0,932.. Sekunden herunterholen kann, ist das schonmal ne feine Sache, aber damit decke ich auch erst 108 Spieler ab. Mit 30.000 Spielern würde das Skript schon nicht mehr ausgeführt werden und das Spiel damit abbrupt enden. Und da die Zeit, bis ich den Code manuell konvertiert habe natürlich nicht ausser Acht gelassen werden kann, ist es besser sich yetzt schon damit zu beschäftigen. ;)

    Liebe Grüße
    - VampireSilence
  10. vampiresilence schrieb:
    Das ist Ansichtssache. Wenn ich nen Tick von 104 auf 0,932.. Sekunden herunterholen kann, ist das schonmal ne feine Sache, aber damit decke ich auch erst 108 Spieler ab. Mit 30.000 Spielern würde das Skript schon nicht mehr ausgeführt werden und das Spiel damit abbrupt enden. Und da die Zeit, bis ich den Code manuell konvertiert habe natürlich nicht ausser Acht gelassen werden kann, ist es besser sich yetzt schon damit zu beschäftigen. ;)

    Liebe Grüße
    - VampireSilence


    Okey, wenn das 104 Sekunden dauert, dann ist da natürlich garantiert etwas mächtig faul. Solltest vielleicht lieber sehen, was da in deinem Code so viel Rechenkapazität benötigt und wie du das optimieren kannst. Aber, egal, mach was dir beliebt :)
  11. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Das habe ich ya schon und wie gesagt, dauert es yetzt nur noch 0,932 Sekunden, was aber immernoch zuviel ist. In der Beta werden es vermutlich sowieso nicht über 1000 Spieler, aber ich muss auch für die Zukunft planen. Ich glaube nämlich kaum, dass ich C++ mal eben in ein paar Tagen lernen werde.

    Liebe Grüße
    - VampireSilence
  12. Entschuldigt meine Dummheit aber:

    Für die Berechnungen innerhalb eines Browsergames sollte doch C von der Geschwindigkeit völlig ausreichend sein das ist es doch überhaupt nicht nötig ein riesiges Objekt Brimborium zu erschaffen oder ?

    Ansonsten kannst du ja mal schauen, es gibt z.B. für Python spezielle Varianten die für Berechnungen mit höherer Geschwindigkeit (und Qualität / Komplexität) ausgelegt sind (NumPy) ev. bietet das einen ausreichenden Kompromiss zwischen Performance und Aufwand.

    Schlussendlich könntest du z.B. nur zeitkritische Routinen in C ablaufen lassen, in wie weit PHP das ermöglicht weiß ich nicht aber in Python ist das bedenkenlos möglich.

    Ein Script was >100s Ausführungszeit benötigt ist lässt natürlich schon Fragen zur Struktur offen (wenn es jetzt nicht lokal riesiege Dateien parst oder sonstwas tut), aber ev. ergibt sich ein Redesign unter Berücksichtigung von Leistungsaspekten ja bei der Konvertierung ganz von selbst.

    Beitrag zuletzt geändert: 18.10.2009 16:11:14 von fatfox
  13. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Also am besten erkläre ich überhaupt erstmal, was es damit genau auf sich hat. Das Spiel läuft in Ticks ab, die stündlich ausgeführt werden. Dieser Tick treibt das Spiel dann zeitlich also eine Stunde vorran, wobei alle nötigen Berechnen, für alle Spieler, sowie Statistiken und Sonstige Spielelemente durchgeführt werden. Und nur genau dieser Teil muss schneller laufen. Der Spielbetrieb an sich, wie das ausbilden von Einheiten, oder das surfen auf der Seite bleiben PHP, da ein einzelner Klick natürlich nur einen winzigen Bruchteil ausmacht, den zB der Tick oder die Kampfengine ausmachen.

    Hatte eine Objektorientierte Architektur schon getestet, aber die war auch nicht schneller, im Gegenteil. Die erste Version des Ticks war äuerst naiv programmiert, ich hatte ya auch noch keine Erfahrung mit solchen Massenberechnungen. Mit dem was ich aus der aktuellen PHP-Engine heraushole bin ich allerdings schon relativ zufrieden. Die Betonung liegt hierbei auf "relativ" und diese Relation sind konkret gesprochen ebendiese 108 Spieler.

    Ich hoffe allerdings schwer, dass sich diese Zahl noch erhöhen wird und für genau diesen Fall will vorgesorgt sein. Und dabei spielt der Aufwand nur eine untergeordnete Rolle. Man kann natürlich auch argumentieren, dass um das überhaupt nutzen zu können, sowieso mindestens ein V-Server her muss, der ya dann an sich schon eine höhere Leistung bringen würde, dadurch dass ich ihn alleine nutzen würde, allerdings sage ich mir, wenn schon, dann direkt richtig. Damit meine ich das Maximum an Geschwindigkeit und soweit ich weiss, ist das eben C++/Perl. Dass ich mir, unabhängig von der Programmiersprache viel Mühe werde machen müssen, steht dabei natürlich außer Frage.

    Liebe Grüße
    - VampireSilence
  14. Nun, ich 0.9 Sekunden für 100 Spieler ist für den Anfang auch ganz okey. Ich würde mir über das Performanceproblem wirklich erst dann Sorgen machen, wenn's da ist. Wenn du also auf einen V-Server umsteigen musst, aus Performancegründen, dann solltest du dir das nochmals überlegen. Und ich glaube du kannst das auch noch mit PHP weiterhin zehn Mal schneller machen. Insbesondere glaube ich, wenn es dann an die ganz tiefen Berechnungen kommt, also Addition und Muliplikation beispielsweise, dann wird das wohl in PHP kaum deutlich langsamer sein als in C, nachdem es geparst und interpretiert wurde (ich verweise auf Cachen des Bytecodes...)
  15. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Wenn es soweit ist, habe ich da aber ein Problem, dass ich erst nach (mindestens) tagelangem Lernen beheben kann. Die Anschaffung des Servers dauert sicher auch nochmal 48 Stunden, bis alles optimal eingerichtet ist. Also sitzen die Spieler dann Tage oder Wochen auf dem Trockenen und das kommt nicht in Frage. Denn genau in dieser Zeit verliert man unnötig Stammkunden. Ich denke also, dass es das Beste ist, wenn ich mir die Langeweile schonmal etwas mit C++ zu vertreibe.

    Das mit dem Bytecode ist zwar richtig und sicherlich eine prima Sache, allerdings muss ich dazu Programme installieren, die hier auf Lima nicht laufen, somit fällt das leider weg.

    Liebe Grüße
    - VampireSilence
  16. Es gibt einen sehr informativen Artikel über die Entwicklung/den Betrieb eines großen Browsergames. Finde leider den Link nicht mehr, glaube mich aber zu erinnern, daß es um ein Projekt von Gameforge ging.

    Dort wurde genau diese "arbeitsteilige" Programmierung angesprochen. PHP-Skripte bedienten hauptsächlich die Clients. Die wesentlichen Berechnungen führten im Hintergrund auf dem Server, quasi als Dienste laufende Programme aus.

    FF
  17. e********e

    Hallo,

    also ich will jetzt keinem etwas vorwerfen: Aber wer ein spiel mit 108 userhat, dass dann 104 sekunden braucht, sollte sich den code nochmal ganz schnell zur hand nehmen. Ich habe mal eine Websitegeschreieben, die anfangs 20 sekunden zum laden brauchte, nachdem ich mithilfe einiger tuts und meinem freund alles optimiert hatte, brauchte es 1,27 sekunden. Also: Erst selbst optimieren, und dann gegebenenfalls die sprache ändern. aber ich sage es mal so: Es wird schon gründe haben, warum sich php im web durchgesetzt hat. große plattformen würden es sicherlich nicht nutzen, wenn es so extrem langsam wäre. dass c++ schneller ist, darüber muss man hier nicht diskutieren, aber optimieren bringt eine menge!

    Errorforce
  18. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!