PHP 8 Alpha 1 wurde am 25. Juni ver?ffentlicht und PHP 8 Alpha 2 wurde am 9. Juli ver?ffentlicht. Im Allgemeinen ist Alpha 2 eine einigerma?en brauchbare Version, also habe ich sie am Wochenende evaluiert.
Werfen wir zun?chst einen Blick auf die Ergebnisse:
JIT ist nicht aktiviert
php?-d?opcache.jit_buffer_size=0?Zend/bench.php simple?????????????0.025simplecall?????????0.012simpleucall????????0.012simpleudcall???????0.012mandel?????????????0.135mandel2????????????0.211ackermann(7)???????0.082ary(50000)?????????0.012ary2(50000)????????0.010ary3(2000)?????????0.186fibo(30)???????????0.283hash1(50000)???????0.039hash2(500)?????????0.041heapsort(20000)????0.089matrix(20)?????????0.110nestedloop(12)?????0.096sieve(30)??????????0.045strcat(200000)?????0.019------------------------ Total??????????????1.419
JIT ist aktiviert:
php?-d?-d?opcache.jit_buffer_size=64M?-d?opcache.jit=1205?Zend/bench.php simple?????????????0.001simplecall?????????0.000simpleucall????????0.000simpleudcall???????0.000mandel?????????????0.005mandel2????????????0.006ackermann(7)???????0.010ary(50000)?????????0.005ary2(50000)????????0.004ary3(2000)?????????0.011fibo(30)???????????0.027hash1(50000)???????0.027hash2(500)?????????0.018heapsort(20000)????0.011matrix(20)?????????0.011nestedloop(12)?????0.006sieve(30)??????????0.004strcat(200000)?????0.009------------------------ Total??????????????0.155
Und Opcache ist nicht aktiviert:
php?Zend/bench.php simple?????????????0.051simplecall?????????0.017simpleucall????????0.083simpleudcall???????0.089mandel?????????????0.506mandel2????????????0.409ackermann(7)???????0.095ary(50000)?????????0.012ary2(50000)????????0.010ary3(2000)?????????0.187fibo(30)???????????0.367hash1(50000)???????0.040hash2(500)?????????0.041heapsort(20000)????0.097matrix(20)?????????0.122nestedloop(12)?????0.093sieve(30)??????????0.063strcat(200000)?????0.018------------------------ Total??????????????2.299
Opcache ist nicht aktiviert: 2,299s Wenn Opcache aktiviert ist, JIT jedoch nicht: 1,419 s Wenn Opcache aktiviert ist und JIT aktiviert ist: 0,155 s
Mit aktiviertem JIT ist es fast das 9,15-fache des Werts ohne aktiviertes JIT. Nach mehreren Tests liegt dieser Wert stabil zwischen dem 8-fachen und dem 10-fachen.
Wie funktioniert MPF?
Um nah an unserem Gesch?ft zu sein, haben wir unter der MPF-Framework-Umgebung
aliyun centos 6.9
php7.test.com php-fpm einen Prozess getestet php8.test.com php-fpm ein Prozess
Mpf zwei Schnittstellen
/v1/hello/wzh/index1
public?function?index1()?{????$this->output('123'); }
/v1/hello/wzh/index2
public?function?index2()?{ ????$a?=?0;????for?($i?=?0;?$i?< 1000000; $i++) $a++; $this->output($a); }
Lassen Sie uns einen Stresstest durchführen
php7 mit weniger Berechnung
wrk?-c36?-d?5s?-t12?https://php7.test.com/v1/hello/wzh/index1 Running?5s?test?@?https://php7.test.com/v1/hello/wzh/index1 ??12?threads?and?36?connections ??Thread?Stats???Avg??????Stdev?????Max???+/-?Stdev ????Latency???432.97ms???76.00ms?527.38ms???92.17% ????Req/Sec?????8.38??????5.36????20.00?????63.85% ??396?requests?in?5.09s,?121.43KB?readRequests/sec:?????77.78 Transfer/sec:?????23.85KB
php7 Mehr Berechnungen
wrk?-c36?-d?5s?-t12?https://php7.test.com/v1/hello/wzh/index2 Running?5s?test?@?https://php7.test.com/v1/hello/wzh/index2 ??12?threads?and?36?connections ??Thread?Stats???Avg??????Stdev?????Max???+/-?Stdev ????Latency?????1.02s???569.99ms???1.96s????57.14% ????Req/Sec?????3.18??????3.43????10.00?????80.88% ??70?requests?in?5.03s,?21.60KB?read ??Socket?errors:?connect?0,?read?0,?write?0,?timeout?42 Requests/sec:?????13.91 Transfer/sec:??????4.29KB
php8 JIT schaltet weniger Berechnungen ein
wrk?-c36?-d?5s?-t12?https://php8.test.com/v1/hello/wzh/index1 Running?5s?test?@?https://php8.test.com/v1/hello/wzh/index1 ??12?threads?and?36?connections ??Thread?Stats???Avg??????Stdev?????Max???+/-?Stdev ????Latency????34.48ms????4.34ms??95.45ms???87.87% ????Req/Sec????84.61?????13.36???121.00?????85.28% ??5083?requests?in?5.03s,?1.67MB?readRequests/sec:???1010.55 Transfer/sec:????340.43KB
php8 JIT schaltet mehr Berechnungen ein
wrk?-c36?-d?5s?-t12?https://php8.test.com/v1/hello/wzh/index2 Running?5s?test?@?https://php8.test.com/v1/hello/wzh/index2 ??12?threads?and?36?connections ??Thread?Stats???Avg??????Stdev?????Max???+/-?Stdev ????Latency????97.84ms????4.97ms?159.50ms???92.12% ????Req/Sec????30.27??????4.42????50.00?????86.50% ??1814?requests?in?5.07s,?614.71KB?readRequests/sec:????357.76 Transfer/sec:????121.23KB
php8 JIT schaltet weniger Berechnungen aus
wrk?-c36?-d?5s?-t12?https://php8.test.com/v1/hello/wzh/index1 Running?5s?test?@?https://php8.test.com/v1/hello/wzh/index1 ??12?threads?and?36?connections ??Thread?Stats???Avg??????Stdev?????Max???+/-?Stdev ????Latency????38.10ms????6.47ms?239.60ms???94.01% ????Req/Sec????77.50?????12.76???110.00?????89.63% ??4622?requests?in?5.04s,?1.52MB?readRequests/sec:????916.22 Transfer/sec:????308.65KB
[Bild:BA1A37D. 8 -760E -4637-901B-3E3521F969E7-4107-0000191504DD1B2E/86D37899-3B46-4BDA-B396-E5C8DD51068E.png]

13
倍,而且計(jì)算越多優(yōu)化越明顯,計(jì)算多情況下php8JIT是php7性能的25.7
Kompilierungsprozess
Beschwerde: Die manuelle Kompilierung von PHP dauerte 2 Stunden und ich bin auf N Fallstricke gesto?en. Damit jeder mehr Anforderungen schreiben kann, werde ich die Fallstricke teilen
Aliyun Centos 6.9, unser Unternehmen verwendet normalerweise diese Version.
php-Quellcode-Kompilierung
wrk?-c36?-d?5s?-t12?https://php8.test.com/v1/hello/wzh/index2 Running?5s?test?@?https://php8.test.com/v1/hello/wzh/index2 ??12?threads?and?36?connections ??Thread?Stats???Avg??????Stdev?????Max???+/-?Stdev ????Latency???766.16ms??181.30ms?887.08ms???88.37% ????Req/Sec?????6.25??????5.36????20.00?????91.36% ??215?requests?in?5.09s,?72.86KB?readRequests/sec:?????42.22 Transfer/sec:?????14.31KB
Hier schl?gt die Makefile-Generierung normalerweise fehl. Es gibt sp?ter Beispiele für eine fehlgeschlagene Generierung.
wget?https://downloads.php.net/~carusogabriel/php-8.0.0alpha2.tar.gz tar?-zxf?php-8.0.0alpha2.tar.gzcd?php-8.0.0alpha2 ./configure?--prefix=/yourdir/php8?--with-config-file-path=/yourdir/php8/etc?--enable-mysqlnd?--with-mysqli=mysqlnd?--with-pdo-mysql=mysqlnd?--enable-fpm?--enable-static?--enable-sockets?--with-zip?--enable-calendar?--enable-bcmath?--enable-mbstring?--with-zlib?--with-iconv=/usr/local/libiconv?--enable-gd?--enable-mbstring?--with-freetype?--with-mysql-sock=/tmp/mysql.sock?--disable-ipv6?--enable-debug?--with-openssl?--enable-opcache復(fù)制代碼
configure php.ini
Denken Sie daran, die alte Konfiguration des Opcaches aufzuschreiben. ini ist JIT immer noch eine Optimierung von Opcache.
make?-j?8 make?install cp?php.ini-production?/yourdir/php8/etc/php.ini
Fehlerl?sung konfigurieren
Hier sind einige Probleme mit ./configure failed
Problem 1
zend_extension=opcache.so opcache.enable=1 ;?命令行測(cè)試的話這里一定要打開 opcache.enable_cli=1 opcache.memory_consumption=512 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.validate_timestamps=1 opcache.revalidate_freq=300 opcache.fast_shutdown=1 opcache.enable_file_override?=?1 opcache.blacklist_filename?=?/etc/php.d/opcache.blacklist ;?這里就是新的jit的配置 opcache.jit=1205 opcache.jit_buffer_size=64M
L?sung
No?package?'sqlite3'?found
Hinweis
Dies direkt zu tun wird nicht funktionieren, die Version im Yum-Warehouse ist zu niedrig.
wget?https://www.sqlite.org/2020/sqlite-autoconf-3320300.tar.gz tar?-zxf?sqlite-autoconf-3320300.tar.gzcd?sqlite-autoconf-3320300 ./configure?--prefix=/usr/local/lib/sqlite-3.32.0 make?CFLAGS="-g?-O2?-DSQLITE_ENABLE_COLUMN_METADATA"make?installexport?PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/sqlite-3.32.0/lib/pkgconfig"復(fù)制代碼
Problem 2
yum?install?sqlite-devel
L?sung
configure:?error:?Please?reinstall?the?iconv?library.
Problem 3
wget?http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz tar?-zxf?libiconv-1.14.tar.gzcd?libiconv-1.14 ./configure? make? make?install
?hnlich funktioniert yum auch nicht, die Version ist zu niedrig.
No?package?'oniguruma'?found
L?sung
yum?install?oniguruma-devel
Problem Vier
wget?https://github.com/kkos/oniguruma/archive/v6.9.5_rev1.tar.gz tar?-zxf?v6.9.5_rev1.tar.gzcd?oniguruma-6.9.5_rev1/? autoreconf?-vfi ./configure?--prefix=/usr/local/lib/oniguruma-6.9.5 make? make?installexport?PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/oniguruma-6.9.5/lib/pkgconfig"
L?sung
No?package?'libzip'?found
Viel Spa? mit PHP 8 & JIT!
Das obige ist der detaillierte Inhalt vonSp?t aber angekommen! Die PHP8-Rezension finden Sie hier~. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Die Schritte zum Hinzufügen der MySQL-Erweiterung zu PHP8 sind: 1. Installieren Sie die MySQL-Client-Bibliothek. 3. Laden Sie den MySQL-Erweiterungsquellcode herunter. 5. Aktivieren Sie die MySQL-Erweiterung MySQL-Erweiterung; 6. Starten Sie einfach einen Webserver neu.

Die Unterschiede zwischen PHP5 und PHP8 bestehen in Bezug auf Leistung, Sprachstruktur, Typsystem, Fehlerbehandlung, asynchrone Programmierung, Standardbibliotheksfunktionen und Sicherheit. Detaillierte Einführung: 1. Leistungsverbesserung: PHP8 führt einen JIT-Compiler ein, der einige hochfrequente Ausführungscodes kompilieren und optimieren kann, wodurch die Ausführungsgeschwindigkeit verbessert wird. PHP8 führt einige neue Sprachstrukturen und Funktionen ein. PHP8 unterstützt benannte Parameter, sodass Entwickler Parameternamen anstelle der Parameterreihenfolge usw. übergeben k?nnen.

In diesem Artikel erfahren Sie, wie Sie Apache2.4 installieren und PHP8.0 konfigurieren. Der Artikel enth?lt Bilder und detaillierte Schritte zur Installation und Konfiguration von Apache2.4+php8.0~

PHP8 kann MySQLi und PDO verwenden, um eine Verbindung zur Datenbank herzustellen. Detaillierte Einführung: 1. Verwenden Sie MySQL, um eine Verbindung zur Datenbank herzustellen, indem Sie den Datenbankservernamen, den Benutzernamen, das Kennwort und den Datenbanknamen für die Verbindung übergeben. Verwenden Sie dann das Attribut ?connect_error“, um zu prüfen, ob die Verbindung erfolgreich ist, und geben Sie eine Fehlermeldung aus, wenn die Verbindung fehlschl?gt. Schlie?en Sie abschlie?end die Verbindung, indem Sie die Methode ?close()“ aufrufen. 2. Verwenden Sie PDO, um eine Verbindung zur Datenbank herzustellen, und stellen Sie eine Verbindung her, indem Sie den Namen des Datenbankservers, das Kennwort und den Datenbanknamen usw. übergeben.

Zu den Methoden des PHP8-Datentyps geh?ren die Konvertierung von Zeichenfolgen in Ganzzahlen, die Konvertierung von Ganzzahlen in Zeichenfolgen, die Konvertierung von Zeichenfolgen in Gleitkommazahlen, die Konvertierung von Gleitkommazahlen in Zeichenfolgen, die Konvertierung von Arrays in Zeichenfolgen, die Konvertierung von Zeichenfolgen in Arrays, die Konvertierung von Booleschen Werten in Ganzzahlen und die Konvertierung von Ganzzahlen in Bestimmung und Konvertierung boolescher Werte und Variablentypen. Ausführliche Einführung: 1. Die Konvertierung einer Zeichenfolge in eine Ganzzahl umfasst die Funktion intval() und die erzwungene Typkonvertierung (int). 2. Die Konvertierung einer Ganzzahl in eine Zeichenfolge umfasst die Funktion strval() und die erzwungene Typkonvertierung (String). eine Zeichenfolge zu einem Gleitkommapunkt und so weiter.

Dieser Artikel führt Sie durch die JIT in PHP 8 und spricht darüber, wie JIT am Interpretationsprozess teilnimmt. Ich hoffe, dass er für alle hilfreich ist!

Zu den neuen Funktionen von PHP8 geh?ren JIT-Compiler, Typableitung, benannte Parameter, Union-Typen, Eigenschaften, Verbesserungen bei der Fehlerbehandlung, Unterstützung für asynchrone Programmierung, neue Standardbibliotheksfunktionen und anonyme Klassenerweiterungen. Detaillierte Einführung: 1. JIT-Compiler, PHP8 führt den JIT-Compiler ein, der eine wichtige Leistungsverbesserung darstellt. Der JIT-Compiler kann einige hochfrequente Ausführungscodes in Echtzeit kompilieren und optimieren, wodurch die Ausführungsgeschwindigkeit verbessert wird führt die Typinferenzfunktion ein, die es Entwicklern erm?glicht, beim Deklarieren von Variablen usw. automatisch den Typ von Variablen abzuleiten.

Die verbesserte Leistung von PHP8 umfasst: 1. Einführung des JIT-Compilers; 3. Verbesserung des Garbage-Collection-Mechanismus; 6. Optimierung der String-Verarbeitung; . Verbessern Sie die Array-Verarbeitung. 8. Führen Sie einen neuen Speicherverwaltungsmechanismus ein. 9. Optimieren Sie die Codegenerierung. Detaillierte Einführung: 1. Die Einführung des JIT-Compilers PHP8 stellt den JIT-Compiler vor, eine dynamische Kompilierungstechnologie, die PHP-Code für eine effizientere Ausführung konvertieren kann.
