PERL oder PHP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PERL oder PHP

    Guten Tag,

    ich habe ein Problem mit der Berechnung einiger Werte.
    In der Berechnung werden mehrere WHILE-Schleifen ausgeführt, das können auch mal an die 10.000 sein.
    Das Problem ist nicht das Rechnen an sich, sondern die Zeit die dafür benötigt wird. Jenachdem welche Werte berechnet werden, dauert das Rechnen so lange, das der Browser es abbricht, bzw. nicht zuenderechnen lässt.

    Meine Idee war nun für diese eine Berechnung eine anderen Sprache zu verwenden. Mit c++ soll es anscheinend um ein vielfaches schneller gehen. Aber mit c++ kenne ich mich nicht aus. Nun ist meine Idee, dass ich es mit PERL mache.

    Habe gelsen das PERL wohl auch um ein vielfaches schneller sei als PHP, aber dann habe ich auch wieder das Gegenteil gelesen.

    Meine Frage an euch: Wie oder womit kann ich Berechnungen schneller ausführen lassen ?

  • #2
    Zeig erst mal im Detail, was du wie berechnen willst. Vorher können wir nur raten.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Zitat von Abraxus Beitrag anzeigen
      Guten Tag,

      ich habe ein Problem mit der Berechnung einiger Werte.
      In der Berechnung werden mehrere WHILE-Schleifen ausgeführt, das können auch mal an die 10.000 sein.
      Das Problem ist nicht das Rechnen an sich, sondern die Zeit die dafür benötigt wird. Jenachdem welche Werte berechnet werden, dauert das Rechnen so lange, das der Browser es abbricht, bzw. nicht zuenderechnen lässt.
      Ich vermute mal, dass nicht der Browser sondern das Time-Limit für den Abbruch sorgt. Und das lässt sich ändern.

      Meine Idee war nun für diese eine Berechnung eine anderen Sprache zu verwenden. Mit c++ soll es anscheinend um ein vielfaches schneller gehen.
      Eine Sprache ist nicht schneller als eine andere Sprache. Das C++ Schleifen schneller abarbeitet, liegt daran, dass compiliertes C++ direkt in Maschinensprache ausgeführt wird. PHP bemüht dazu eine Art virtuelle Maschine.

      Aber mit c++ kenne ich mich nicht aus. Nun ist meine Idee, dass ich es mit PERL mache.

      Habe gelsen das PERL wohl auch um ein vielfaches schneller sei als PHP, aber dann habe ich auch wieder das Gegenteil gelesen.
      Beides ist Unsinn. PHP und Perl sind in etwa gleich schnell. Und das Ausführen in einer beliebigen anderen Script-Sprache wird zum gleichen Ergebnis führen.

      Meine Frage an euch: Wie oder womit kann ich Berechnungen schneller ausführen lassen ?
      Da schließe ich mich meinem Vorposter an: Ohne konkrete Beschreibung deines Problems und deines bisheriges Lösungswegs lässt sich da nichts genaues sagen ...
      Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

      Kommentar


      • #4
        Also, ich berechne einen Kampf zwischen 2 Clienten.
        Zuerst initialisiere ich die Schiffe.
        Dann feuert jedes Schiff einmal per Zufall auf ein x-belibiges Schiff des gegners. Jedes mal wenn ein schiff schießt, wird per "rand();" ermittelt auf welches Schiff geschossen wird. Wenn ich nun 10 gegen 10 habe wird also 20 mal eine Zufallszahl ermittelt und dann gerechnet. Angriff gegen Verteidigung usw. Das klappt auch alles. Aber wenn es 10.000 gegen 10.000 sind, dann dauert das ganze schon extrem lange.

        Hier mal eine WhileSchleife für nur eine Art von Schiff ( insgesamt 14 verschiedene gibt es )
        PHP-Code:
        $schiff=10000;
        while(
        $schiff>0)
        {
        $zufall=rand(1,14);

        if(
        $zufall==1){
        //wenn die Zufallszahl eins ist wird auf schiff y geschossen
        if($verteidiger['y']>0){
        //es wird nur geschossen wenn es das schiff y auch gibt
        // nun würde der Kampf ausgeführt ( nur ein paar kleine berechnungen )
        }else{
        /*wenn es das gegnerische Schiff garnicht gibt, wird auch keine Schuss von meinen Schiffen abgezogen, sonder die Whileschleife einfach nochmal durchgegangen und das immer so lange, bis ich ein Schiff treffe, das auch im Kampf verwickelt ist.*/

        $schiff++;
        }}

        $schiff--;

        So, ich schätze es dauert manchmal sehr lange, weil es ja sein kann, das 1000 mal ins Leere gefeuert wird ( das Gegnerische schiff, auf welches geschossen wird ist nicht vorhanden ). Die While-Schleife sollte ja eigentlich 10.000 mal durchlaufen. Wenn der Gegner aber nur eine Art von Schiff hat, obwohl es 14 sein können.

        Kommentar


        • #5
          Die Schleife halte ich für Blödsinn.

          Es ist doch völlig egal, ob du 10000 mal eine Zufallszahl aus 1 bis 14 ziehst, oder eine aus 1 bis 140000.

          Tipp:
          mt_rand() ist zufälliger als rand()
          Wir werden alle sterben

          Kommentar

          Lädt...
          X