1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Neuer JIT Compiler mit 8.4

    • PHP
  • Syntafin
  • 26. September 2023 um 15:12
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 26. September 2023 um 15:12
    • #1

    Die Tage gelesen und werde ich auf alle Fälle zeitnah selbst adaptieren, aber was haltet ihr vom neuen JIT Compiler der mit PHP 8.4 kommen soll?

    Damit sollen ja einige Nachteile der aktuellen Implementierung beseitigt werden und noch größere Teile des Anwendungscodes vorab kompiliert werden können.

    Aber auch die Anpassung an verschiedene CPUs/SoC entfällt wohl damit.

    Mehr Infos dazu kann man ja hier im PR auf GitHub lesen:

    A new PHP JIT implementation based on IR JIT framework by dstogov · Pull Request #12079 · php/php-src
    This PR provides a new JIT implementation based on IR - Lightweight JIT Compilation Framework. Despite of the PHP 8.* JIT approach, that generates native code…
    github.com

    Klar würde es die Startzeiten erhöhen wie man ja unter Nachteilen ließt, die hat man ja aber nur einmalig und nicht ständig.

  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 26. September 2023 um 15:58
    • #2
    Zitat von Syntafin

    Die Tage gelesen und werde ich auf alle Fälle zeitnah selbst adaptieren, aber was haltet ihr vom neuen JIT Compiler der mit PHP 8.4 kommen soll?

    Damit sollen ja einige Nachteile der aktuellen Implementierung beseitigt werden und noch größere Teile des Anwendungscodes vorab kompiliert werden können.

    Aber auch die Anpassung an verschiedene CPUs/SoC entfällt wohl damit.

    Mehr Infos dazu kann man ja hier im PR auf GitHub lesen:

    https://github.com/php/php-src/pull/12079

    Klar würde es die Startzeiten erhöhen wie man ja unter Nachteilen ließt, die hat man ja aber nur einmalig und nicht ständig.

    Alles anzeigen

    entsoannt

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 26. September 2023 um 23:29
    • #3

    Weißt du überhaupt was der JIT Compiler ist :/ da du ja laut eigener Aussage immer nur PHP 7.4 verwendest.

  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 27. September 2023 um 06:49
    • #4
    Zitat von Syntafin

    Weißt du überhaupt was der JIT Compiler ist :/ da du ja laut eigener Aussage immer nur PHP 7.4 verwendest.

    was ist denn JIT COmpiler?

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 27. September 2023 um 07:07
    • #5

    JIT steht für "Just in Time", also das Code dann kompiliert wird, wenn er benötigt wird

    Klar kann man sich jetzt denken "hä? PHP wird doch immer erst bei Aufruf ausgeführt?", genau!

    Der Unterschied ist, das beim JIT nur das kompiliert wird, was auch für die aktuelle Anfrage nötig ist.

    Klassisch sieht das ja folgendermaßen aus, wenn eine Seite auf PHP basiert:

    - Anfrage an Webserver

    - Webserver leitet Anfrage an PHP-FPM weiter

    - PHP-FPM spawnt einen Worker

    - Worker lädt die Eingangsdatei und alle darin verzweigten Dateien (zB via Autoloader)

    - Anfrage wird bearbeitet, weitere Teile werden nachgeladen und kompiliert

    - Ergebnis wird erzeugt

    - Ergebnis wird von PHP an Webserver zurückgegeben

    - Webserver sendet es an Browser

    - Browser rendert die Ausgabe (HTML)

    Wenn man nun OPCache + JIT verwendet, werden große Teile des Codes zwischengespeichert und nicht bei jedem Aufruf neu kompiliert, was nicht schon kompiliert ist und immer "neu" gebraucht wird, kann der JIT je nach ermessen und Nöten selbst schnell bereitstellen, ohne Abhängigkeiten zu laden die in der aktuellen Anfrage nicht benötigt werden.

    Kombiniert man dann noch OPCache und JIT mit den Möglichkeiten von Swoole oder RoadRunner, kann man die Ladezeiten noch einmal um ein vielfaches drücken, da der ganze Bootstrap komplett entfällt, da man diesen einmalig kompiliert und im Speicher vorhält (ich verwende zB aktuell überall RoadRunner, wechsle aber zukünftig auf Swoole dafür)

  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 27. September 2023 um 07:43
    • #6
    Zitat von Syntafin

    JIT steht für "Just in Time", also das Code dann kompiliert wird, wenn er benötigt wird

    Klar kann man sich jetzt denken "hä? PHP wird doch immer erst bei Aufruf ausgeführt?", genau!

    Der Unterschied ist, das beim JIT nur das kompiliert wird, was auch für die aktuelle Anfrage nötig ist.

    Klassisch sieht das ja folgendermaßen aus, wenn eine Seite auf PHP basiert:

    - Anfrage an Webserver

    - Webserver leitet Anfrage an PHP-FPM weiter

    - PHP-FPM spawnt einen Worker

    - Worker lädt die Eingangsdatei und alle darin verzweigten Dateien (zB via Autoloader)

    - Anfrage wird bearbeitet, weitere Teile werden nachgeladen und kompiliert

    - Ergebnis wird erzeugt

    - Ergebnis wird von PHP an Webserver zurückgegeben

    - Webserver sendet es an Browser

    - Browser rendert die Ausgabe (HTML)

    Wenn man nun OPCache + JIT verwendet, werden große Teile des Codes zwischengespeichert und nicht bei jedem Aufruf neu kompiliert, was nicht schon kompiliert ist und immer "neu" gebraucht wird, kann der JIT je nach ermessen und Nöten selbst schnell bereitstellen, ohne Abhängigkeiten zu laden die in der aktuellen Anfrage nicht benötigt werden.

    Kombiniert man dann noch OPCache und JIT mit den Möglichkeiten von Swoole oder RoadRunner, kann man die Ladezeiten noch einmal um ein vielfaches drücken, da der ganze Bootstrap komplett entfällt, da man diesen einmalig kompiliert und im Speicher vorhält (ich verwende zB aktuell überall RoadRunner, wechsle aber zukünftig auf Swoole dafür)

    Alles anzeigen

    oha klingt gut.
    Muss man dem Compiler irgendwie sagen was er zwisschenspeichern kann und was nicht oder macht der das automattisch. Und gibt es das auch für PHP 7.4?

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 27. September 2023 um 08:35
    • #7
    Zitat von flyingtable07

    Muss man dem Compiler irgendwie sagen was er zwisschenspeichern kann und was nicht oder macht der das automattisch.

    Das kommt auf den Modus an was und wie.

    Zitat von flyingtable07

    Und gibt es das auch für PHP 7.4?

    Nein und PHP 7.4 ist EOL.

  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 27. September 2023 um 13:28
    • #8
    Zitat von Syntafin

    Das kommt auf den Modus an was und wie.

    Nein und PHP 7.4 ist EOL.

    ah danke.

    Kann man auf PHP 8.2 upgraden ohne seinen PHP Code zu verändern? Und muss man dieses komische Feature von PHP 8.2 nutzen wo man alles mit einem einzigen PHP Script mache?

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 27. September 2023 um 15:11
    • #9

    Ob du einfach upgraden kannst, kann ich dir nicht sagen, mit PHP 8 wurde alles was in 7.4 deprecated markiert wurde eben entfernt.

    Wenn du kein Pest/PHPUnit verwendest, kannst ja einfach umstellen und so Testen ob alles klappt.

  • martin
    Punkte
    1.905
    Beiträge
    359
    • 27. September 2023 um 23:09
    • #10
    Zitat von flyingtable07

    ah danke.

    Und muss man dieses komische Feature von PHP 8.2 nutzen wo man alles mit einem einzigen PHP Script mache?

    Was ist das denn?

  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 28. September 2023 um 07:42
    • #11
    Zitat von martin

    Was ist das denn?

    syntafin at mi gezeigt, dass man in php 8 die möglichkeit hat das php script nicht erst bei auruf einer seite zu starten sondern dass es schon die gnze zeit läuft. die einzelnen request werden dann übe eine funktion in diesem einen pp script abgefangen und barbeiter.

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 28. September 2023 um 08:09
    • #12

    Du redest also von Swoole/OpenSwoole/RoadRunner

  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 28. September 2023 um 13:33
    • #13
    Zitat von Syntafin

    Du redest also von Swoole/OpenSwoole/RoadRunner

    keine ahnung glaub schon

  1. Datenschutzerklärung
  2. Impressum