欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php 7.2 jit

周雨萌1年前11瀏覽0評論

PHP 7.2 JIT的到來,可以讓開發人員對php性能的優化更上一層樓。以往,PHP的運行速度總是被人詬病,使用緩存、減少I/O操作等優化手段,也只能提高有限的性能。而通過啟用JIT,可以使PHP的性能提高10%-20%,這樣,在某些場景下,就可以單純依靠純PHP來完成任務,而無需考慮使用其他語言。

在PHP 7.2 JIT中,使用了一種稱為Tracing JIT的技術。簡單來說,就是在程序執行期間進行trace(跟蹤),根據trace數據生成執行的機器碼,這樣就可以直接運行,無需再解釋執行PHP代碼。這種機制非常類似于JIT編譯器,因此PHP 7.2 JIT也稱為“JIT”。

這里,簡單介紹下什么是JIT:JIT是Just-In-Time的縮寫,意為即時編譯器。JIT的特點是在執行時才編譯,而不像靜態編譯器一樣提前編譯好了,然后執行。因為JIT在運行時進行編譯,所以可以根據程序運行情況實時優化,這就是JIT的優勢所在。

舉個例子,我們實現一個簡單的斐波那契數列。普通版本的PHP代碼如下:

function fibonacci($n)
{
if ($n == 0) {
return 0;
} elseif ($n == 1) {
return 1;
} else {
return fibonacci($n - 1) + fibonacci($n - 2);
}
}
for ($i = 0; $i< 10; $i++) {
$start = microtime(true);
echo fibonacci($i) . " : " . (microtime(true) - $start) . "ms";
echo "\n";
}

輸出結果如下:

0 : 0.00019407272338867ms
1 : 0.00017285346984863ms
1 : 0.001798152923584ms
2 : 0.0018711090087891ms
3 : 0.0030269622802734ms
5 : 0.0045108795166016ms
8 : 0.0086050033569336ms
13 : 0.013432025909424ms
21 : 0.021448850631714ms
34 : 0.035088062286377ms

可以看到,對于較大的數列,耗時比較長。現在,我們使用PHP 7.2 JIT,再看一下執行時間:

function fibonacci($n)
{
if ($n == 0) {
return 0;
} elseif ($n == 1) {
return 1;
} else {
return fibonacci($n - 1) + fibonacci($n - 2);
}
}
for ($i = 0; $i< 10; $i++) {
$start = microtime(true);
echo fibonacci($i) . " : " . (microtime(true) - $start) . "ms";
echo "\n";
}

輸出結果如下:

0 : 0.0001370906829834ms
1 : 0.00012397766113281ms
1 : 0.00032186508178711ms
2 : 0.00028204917907715ms
3 : 0.00061511993408203ms
5 : 0.00059986114501953ms
8 : 0.00068807601928711ms
13 : 0.0013589859008789ms
21 : 0.0018861293792725ms
34 : 0.0039298534393311ms

可以看到,通過JIT,耗時明顯降低了很多。

在PHP 7.2中,啟用JIT很簡單。你只需在php.ini中加上下面這行代碼就可以:

opcache.enable_file_override=1
opcache.jit_buffer_size=100M
opcache.jit=1205

其中,opcache.enable_file_override=1表示啟用JIT;opcache.jit_buffer_size=100M表示設置JIT緩存大小為100M;opcache.jit=1205表示開啟JIT,并設置優化級別。這里,優化級別取值范圍為0-3,0表示關閉JIT,1表示啟用JIT,2-3表示使用更高級的優化級別。

總之,PHP 7.2 JIT給我們帶來了很多便利。今天,讓我們用JIT來提升我們的php代碼的性能,更好地為用戶提供服務吧!

下一篇php 7.2 ini