1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • 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
  • Online
    Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.773
    Trophäen
    2
    Beiträge
    1.412
    • 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.

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • flyingtable07
    18
    flyingtable07
    Mitglied
    Reaktionen
    59
    Punkte
    3.564
    Trophäen
    1
    Beiträge
    678
    • 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

  • Online
    Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.773
    Trophäen
    2
    Beiträge
    1.412
    • 26. September 2023 um 23:29
    • #3

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

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • flyingtable07
    18
    flyingtable07
    Mitglied
    Reaktionen
    59
    Punkte
    3.564
    Trophäen
    1
    Beiträge
    678
    • 27. September 2023 um 06:49
    • #4
    Zitat von Syntafin

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

    was ist denn JIT COmpiler?

  • Online
    Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.773
    Trophäen
    2
    Beiträge
    1.412
    • 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)

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • flyingtable07
    18
    flyingtable07
    Mitglied
    Reaktionen
    59
    Punkte
    3.564
    Trophäen
    1
    Beiträge
    678
    • 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?

  • Online
    Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.773
    Trophäen
    2
    Beiträge
    1.412
    • 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.

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • flyingtable07
    18
    flyingtable07
    Mitglied
    Reaktionen
    59
    Punkte
    3.564
    Trophäen
    1
    Beiträge
    678
    • 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?

  • Online
    Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.773
    Trophäen
    2
    Beiträge
    1.412
    • 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.

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • martin
    14
    martin
    Mitglied
    Reaktionen
    69
    Punkte
    1.904
    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
    18
    flyingtable07
    Mitglied
    Reaktionen
    59
    Punkte
    3.564
    Trophäen
    1
    Beiträge
    678
    • 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.

  • Online
    Syntafin
    27
    Syntafin
    LISTstack Dev
    Reaktionen
    498
    Punkte
    7.773
    Trophäen
    2
    Beiträge
    1.412
    • 28. September 2023 um 08:09
    • #12

    Du redest also von Swoole/OpenSwoole/RoadRunner

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • flyingtable07
    18
    flyingtable07
    Mitglied
    Reaktionen
    59
    Punkte
    3.564
    Trophäen
    1
    Beiträge
    678
    • 28. September 2023 um 13:33
    • #13
    Zitat von Syntafin

    Du redest also von Swoole/OpenSwoole/RoadRunner

    keine ahnung glaub schon

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung