PHP-Script langsamer als C++ Programm ?



  • Zeig nochmal genau deine SQL-Querys. Ist werde aus dem gezeigten nicht schlau.
    Der Unterschied ist zu groß um das auf PHP zu schieben



  • Hi,
    Sieht genau so aus wie ich es gepostet habe, nur mit ein paar werten!

    Bye



  • Hmmm - php ist zwar deutlich langsamer als c++, aber bei einer so simplen Query macht das imo nicht so einen einen Unterschied(Die mysql Funktionen sind ja auch in C geschrieben).

    Einen so hohen performance Unterschied könnte ich mir bei komplexen Algorithmen vorstellen, aber nicht bei einer normalen Abfrage.

    Gruss



  • Normalerweise ist C++ nur deswegen schneller, weil man low-levliger arbeitet.

    Zum Beispiel werden Variabeln nicht automatisch mit 0 initialisiert, weil das ja auch nicht immer nötig ist.

    Aber einen großen Teil macht auch aus, dass C++ einfach mehr Möglichkeiten zur Optimierung bietet, weil man wirklich jede Kleinigkeit selber bestimmen kann und auf die Zehen optimieren kann.

    C++ ist nicht zwingend schneller, Bsp.:

    for(int i = 0; i < 1000000000; ++i);
    
    int var = 10;
    
    $var = 10;
    

    Was ist schneller? 🙂

    Übertrieben dargestellt, aber genau so sieht es eigentlich aus, es kommt darauf an, wie man es designed...

    Nun gut, wie das hier aussieht, weiß ich nicht.

    MfG mAV



  • Ich frage mich allerdings wozu deine SQL-Statements gut sind. Eine Schleife auf eine Select indem du dann ein UPDATE machst?

    Ich habe schonmal gesagt. Schreib genauer was du machen willst und wir optimieren vieleicht den Code oder den Query



  • Hm, das wird leider nicht möglich sein, weil das ganze auslesen/updaten so komplex ist, dass ihr das bestimmt nicht überschauen könnt ! ( in relevanter Zeit 🙂 )



  • @JJ
    Probieren geht über studieren... 😉



  • Hi,

    sag mal, benutzt du zum ändern der Werte in einer Tabelle die Werte aus der Tabelle, oder einer anderen Tabelle selbst???

    Dann würd ich das versuchen alles in ein SQL-Statement zu schreiben und das ganze dann an mysql schicken. Dann hat die geschwindigkeit von PHP oder C++ doch keinen Unterschied mehr. Oder woher bekommst du jede Stunde 200.000 geänderte Werte, wenn nicht aus einer Tabelle?



  • Hi,

    @datobi2k:
    Also ich programmiere gerade an einem Game. Und die Werte müssen jede Stunde(pro Tick) geupdatet werden.
    In meinem Fall sind eig. alle Werte die ich brauche in der Tabelle ( in mehereren verteilt ).

    Mein Problem beschänkt sich aber eher das Daten-Format das in den Feldern gespeichert ist. ( "serialize"-funktion von php).
    Es wird leider nicht möglich sein mit dem Mysql-Script dieses Format zu decodieren.

    Ich hab mir überlegt das Format in ein durch ein in Komma getrennte Zeichkette, welche die Werte enthält, zu ändern.
    Dadurch kann ich dann per MYSQL die zeichenkette teilweise auslesen!

    Hm, vielleicht könnt ihr mal ein Statement dazu geben, wie ihr sowas gelöst habt / oder lösen würdet ! 😕

    Soo, nun will ich vielleicht doch noch was ansprechen.
    Ich habe zwei Tabellen: "solar_systems" und "planets".

    Zu jedem Solar-System gibt es mehrere Planeten.
    Um die Planeten zu updaten brauche ich informationen von Solar-System.

    Ist es nun möglich durch einen ->einzigen<- Update das richtige Solar-System zu selectieren mit den Planeten in der anderen Tabelle, und diese auch dann mit den Werten zu updaten.
    Also die Planeten brauchen keine daten untersich, sondern nur von dem Solar-System.

    .. hm so jetzt es es doch wieder laange geworden. 😃

    Bye



  • JayJay schrieb:

    Hi,

    Hm, vielleicht könnt ihr mal ein Statement dazu geben, wie ihr sowas gelöst habt / oder lösen würdet ! 😕

    Bye

    Ich leider nicht. Warum ?

    so komplex ist, dass ihr das bestimmt nicht überschauen könnt !

    Ich kann dazu aber folgendes sagen. Wenn du eine Tabelle mit Werten aus einer anderen Tabelle Updaten musst dann hast du vermutlich eine Problem mit der Normalisierung relationaler DB`s.

    Wenn die Selecttabelle 200.000 Datensätze hat machst du 200 000 UPDATES. Ob das sinnvoll ist frage ich mich jetzt schon.



  • Hi,

    ist es nicht vielleicht sinnvoll zu jedem User den letzten Tick abzuspeichern, und wenn nun ein User wieder auf die Seite geht oder er angegriffen wird etc. die Differenz mit einer Funktion auszugleichen und einzutragen? für Ressourcen zum Beispiel. Ist nur ne Idee damit du nicht soviel auf einmal aktualieren musst, sonder nur "on demand" quasi..

    Zu der anderen Frage:

    update planets, solar_systems
    set planets.steine = planets.steine + solar_systems.steineprotick
    where planets.solar_systems = solar_systems.id;

    Damit würdest du jetzt jedem Planeten beim ausführen soviel zusätzliche
    steine hinzufügen wie es in dem Solarsystem pro Tick gibt

    sowas in der art ?



  • @Tow-B.de:
    1)
    Naja diese Idee hatten wir auch erstmals, jedoch zieht das Vorteile & Nachteile mitsich. Endlich haben wir uns dann für ein globales Update für alle pro Tick entschieden!

    Jo, genau das hab ich gesucht. Hab mir schon gedacht, dass es so funktioniert war mich aber nicht sicher! nochmals Danke!

    @Unix-Tom:

    Unix-Tom schrieb:

    JayJay schrieb:

    Hi,

    Hm, vielleicht könnt ihr mal ein Statement dazu geben, wie ihr sowas gelöst habt / oder lösen würdet ! 😕

    Bye

    Ich leider nicht. Warum ?

    ....

    Wenn die Selecttabelle 200.000 Datensätze hat machst du 200 000 UPDATES. Ob das sinnvoll ist frage ich mich jetzt schon.

    Hm, es ist eig. schon sinnvoll den Spielstand nach jedem tick zu updaten ! 🙂

    Bye


  • Mod

    JayJay schrieb:

    Hm, es ist eig. schon sinnvoll den Spielstand nach jedem tick zu updaten ! 🙂

    Aber nicht mit sovielen Queries. Wenns mit joins machbar ist, alles nur in ein Query zu packen, wäre es enorm schneller. Denn 200.000 Queries _sind_ arschlahm.



  • Shade Of Mine schrieb:

    JayJay schrieb:

    Hm, es ist eig. schon sinnvoll den Spielstand nach jedem tick zu updaten ! 🙂

    Aber nicht mit sovielen Queries. Wenns mit joins machbar ist, alles nur in ein Query zu packen, wäre es enorm schneller. Denn 200.000 Queries _sind_ arschlahm.

    Hm, das problem ist, dass ich von einer tabelle die ganzen einträge für die updates meheren anderen tabellen brauche. Teilweise kann ich die querys auch zusammenfassen.

    Bye


Anmelden zum Antworten