Original von Kallisti
Original von Tron
Faktor 200 im Durchschnitt kommt nach gängigen Testreihen schon hin [...]
Darueber dass obiges Blogposting absoluter Bullshit ist und die 200 bei realen Szenarien absolut keinen Realitaetsbezug hat, muessen wir hier hoffentlich nicht diskutieren, oder? Ich bin auch kein PHP Freund, aber irgendwann ist es auch gut mit dem Bashing.
Wenn hier gebashed würde, machte der Kommentar Sinn... Sagt dir das Worte "Durchschnitt" was, hast du den Rest nicht gelesen, oder zitierst du bewusst nur Auszüge, auf denen du rumhacken kannst?
Das ein Durchschnitt in diesem Zusammenhang immer willkürlich gewählt ist sollte jedem klar sein. In den Testergebnissen sind die Faktoren idR detaillierter angegeben, und der Durchschnitt wird dann über verschiedene Aufgaben gebildet. Wie diese Aufgaben im betrachteten Projekt vertreten sind ist eine Betrachtung, die dann notwendig wäre um reale Performanceunterschiede abzuschätzen,
PHP ist ohne weiteres zutun erstmal eine interpretierte Scriptsprache. Man kann da ne Menge rausholen mit diversen Hilfsmitteln, wissen die meisten langzeit PHP-benutzer, aber einen Apfel langziehen macht noch keine Birne. (ich hoffe ich verpasse hier nicht einen allgemein gesehenen Qualitätsunterschied zwischen Obstsorten, damit nicht wieder wer Schaum vorm Mund kriegt). C++ und Java hingegen werden prinzipiell kompiliert, Java hierbei mit einem JIT Compiler, was letztlich dazu geführt hat, Java in einigen Bereichen performanter zu bekommen als C++, da JIT ermöglicht, gezielter auf die konkrete Plattform einzugehen auf der der Code letztlich läuft. (Zum besseren Verständnis: ein C++ Kompilat muss Code produzieren der gleichermassen auf einem Atom läuft wie auf einem Quad Core, mit & ohne MatheCoprozessor etc.)
PHP zu ersetzen durch eine Performantere Alternative KANN also Sinn machen, wenn man aufwändige Berechnungen zu tätigen hat für kompakte Ergebnisse. Um einfach nur eine Datenbankabfrage von der Datenbank über den Webserver an den Client zu liefern eher weniger, da in diesem Fall eher die Netzverbindung das Nadelöhr ist.
Was spricht dagegen, auf das in der Datenbank abgebildete Model auf zwei völlig unterschiedlichen Wegen zuzugreifen [...]
Primaer wohl, dass man quasi den gesamten Code (oder den Grossteil, sprich Datenstrukturen abbilden, Algorithmen, etc.) des Spiels doppelt schreiben und auch pflegen muss? Ich hab genau das frueher gehabt und kann sagen, dass ich das nie wieder tun wuerde. Reusability ist einer der wichtigsten Punkte ueberhaupt, maintenance sowieso.
Das ist Unsinn. Ich spreche hier von einem sehr typischen Fall des Browsergames, wo ein grosser Teil des Modells schlicht und einfach im Datenbankmodell steckt. In diesen Fällen machen Datenbankstruktur und definierte Abfragen den grössten Teil der Logik aus, und eine Pflege in diesem Bereich wird kaum davon beeinflusst, ob ich Viewseitig mit einer, zwei oder 14 verschiedenen Programmiersprachen arbeite. Ein Interface, um Post-daten auszulesen und ein Json oder XML Ergebnis zurückzulierfern schreibe ich normalerweise einmal und verwende es wieder, wenn ich daran viel rumpflegen muss, dann läuft eh was falsch.
Das Reusability und Codepflege in erster Linie mal wichtiger sind als Performance ist offensichtlich und widerspricht sich nicht Grundsätzlich mit meinem Vorschlag. Aber damit du das verstehen kannst, geb ich gern ein konkretes Beispiel:
Ein kleines Team entwickelt ein Browsergame. Die Architektur nebst Datenbankmodell steht, Für das Frontend wird ein PHP-Framework verwendet, welches sich um Seitenkomposition etc kümmert. Einer der Entwickler im Team ist PHP- und Frameworkexperte und kümmert sich um diese Seite des Projekts.
Der Spielablauf findet dann über eine Vielzahl von AJAX-requests statt, die aus Performancegründen zum Beispiel über eine Java Applikation bedient werden. Clientrequests werden über mod_rewrite an die Appserver weitergeleitet, der die Requests über Servlets behandelt. Die PHP scripte können sich bei Bedarf über localhost auch mal dort bedienen wenn notwendig. Auch für diese Seite hats in dem Team einen Entwickler. Und weil beide in jungen Jahren bei Galaxy-news im Entwicklerbereich abgelehnt wurden, können sie sogar miteinander kommunizieren, ohne sich die Schädel einzuschlagen ;)