校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PHP8新特性之JIT案例講解

PHP8新特性之JIT案例講解

熱門標簽:手機外呼系統什么原理 上海400客服電話怎么申請 銀行信貸電話機器人 凱立德地鐵站地圖標注 合肥ai電銷機器人費用 400電話個人能不能辦理 天津電銷外呼系統違法嗎 溫州外呼系統招商 滄州電銷外呼系統價格

PHP8 alpha1已經在昨天發布,相信關于JIT是大家最關心的,它到底怎么用,有什么要注意的,以及性能提升到底咋樣?

首先,我們來看一張圖:

左圖是 PHP 8之前的Opcache流程示意圖, 右圖是 PHP 8中的Opcache示意圖, 可以看出幾個關鍵點:

PHP8的JIT是在Opcache之中提供的

目前PHP8只支持x86架構的CPU

JIT是在原來Opcache優化的優化基礎之上進行優化的,不是替代

事實上JIT共用了很多原來Opcache做優化的基礎數據結構,比如data flow graph, call graph, SSA等,關于這部分,后續如果有時間,可以單獨在寫一個文章來介紹,今天就只是著重在使用層面。

下載安裝好以后,除掉原有的opcache配置以外,對于JIT我們需要添加如下配置到php.ini:

opcache.jit=1205

opcache.jit_buffer_size=64M

opcache.jit這個配置看起來稍微有點復雜,我來解釋下, 這個配置由4個獨立的數字組成,從左到右分別是( 請注意,這個是基于目前alpha1的版本設置,一些配置可能會隨著后續版本做微調 ):

是否在生成機器碼點時候使用AVX指令, 需要CPU支持: 0: 不使用

1: 使用

寄存器分配策略: 0: 不使用寄存器分配

1: 局部(block)域分配

2: 全局(function)域分配

JIT觸發策略: 0: PHP腳本載入的時候就JIT

1: 當函數第一次被執行時JIT

2: 在一次運行后,JIT調用次數最多的百分之(opcache.prof_threshold * 100)的函數

3: 當函數/方法執行超過N(N和opcache.jit_hot_func相關)次以后JIT

4: 當函數方法的注釋中含有@jit的時候對它進行JIT

5: 當一個Trace執行超過N次(和opcache.jit_hot_loop, jit_hot_return等有關)以后JIT

JIT優化策略,數值越大優化力度越大: 0: 不JIT

1: 做opline之間的跳轉部分的JIT

2: 內斂opcode handler調用

3: 基于類型推斷做函數級別的JIT

4: 基于類型推斷,過程調用圖做函數級別JIT

5: 基于類型推斷,過程調用圖做腳本級別的JIT

基于此,我們可以大概得到如下幾個結論:

盡量使用12x5型的配置,此時應該是效果最優的

對于x, 如果是腳本級別的,推薦使用0, 如果是Web服務型的,可以根據測試結果選擇3或5

@jit的形式,在有了attributes以后,可能變為>

現在,我們來測試下啟用和不啟用JIT的時候,Zend/bench.php的差異,首先是不啟用(php -d opcache.jit_buffer_size=0 Zend/bench.php):

simple 0.008

simplecall 0.004

simpleucall 0.004

simpleudcall 0.004

mandel 0.035

mandel2 0.055

ackermann(7) 0.020

ary(50000) 0.004

ary2(50000) 0.003

ary3(2000) 0.048

fibo(30) 0.084

hash1(50000) 0.013

hash2(500) 0.010

heapsort(20000) 0.027

matrix(20) 0.026

nestedloop(12) 0.023

sieve(30) 0.013

strcat(200000) 0.006

------------------------

Total 0.387

根據上面的介紹,我們選擇opcache.jit=1205, 因為bench.php是腳本(php -d opcache.jit_buffer_size=64M -d opcache.jit=1205 Zend/bench.php):

simple 0.002

simplecall 0.001

simpleucall 0.001

simpleudcall 0.001

mandel 0.010

mandel2 0.011

ackermann(7) 0.010

ary(50000) 0.003

ary2(50000) 0.002

ary3(2000) 0.018

fibo(30) 0.031

hash1(50000) 0.011

hash2(500) 0.008

heapsort(20000) 0.014

matrix(20) 0.015

nestedloop(12) 0.011

sieve(30) 0.005

strcat(200000) 0.004

------------------------

Total 0.157

可見, 對于Zend/bench.php, 相比不開啟JIT,開啟了以后,耗時降低將近60%,性能提升將近2倍 。

對于大家研究學習來說,可以通過opcache.jit_debug來觀測JIT后生成的匯編結果,比如對于:

function simple() {
$a = 0;

for ($i = 0; $i  1000000; $i++)

$a++;

}

我們通過php -d opcache.jit=1205 -dopcache.jit_debug=0x01 可以看到:

JIT$simple: ; (/tmp/1.php)

sub $0x10, %rsp

xor %rdx, %rdx

jmp .L2

.L1:

add $0x1, %rdx

.L2:

cmp $0x0, EG(vm_interrupt)

jnz .L4

cmp $0xf4240, %rdx

jl .L1

mov 0x10(%r14), %rcx

test %rcx, %rcx

jz .L3

mov $0x1, 0x8(%rcx)

.L3:

mov 0x30(%r14), %rax

mov %rax, EG(current_execute_data)

mov 0x28(%r14), %edi

test $0x9e0000, %edi

jnz JIT$$leave_function

mov %r14, EG(vm_stack_top)

mov 0x30(%r14), %r14

cmp $0x0, EG(exception)

mov (%r14), %r15

jnz JIT$$leave_throw

add $0x20, %r15

add $0x10, %rsp

jmp (%r15)

.L4:

mov $0x45543818, %r15

jmp JIT$$interrupt_handler

而如果我們采用opcache.jit=1201, 我們可以得到如下結果:

JIT$simple: ; (/tmp/1.php)

sub $0x10, %rsp

call ZEND_QM_ASSIGN_NOREF_SPEC_CONST_HANDLER

add $0x40, %r15

jmp .L2

.L1:

call ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER

cmp $0x0, EG(exception)

jnz JIT$$exception_handler

.L2:

cmp $0x0, EG(vm_interrupt)

jnz JIT$$interrupt_handler

call ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER

cmp $0x0, EG(exception)

jnz JIT$$exception_handler

cmp $0x452a0858, %r15d

jnz .L1

add $0x10, %rsp

jmp ZEND_RETURN_SPEC_CONST_LABEL

你也可以嘗試各種debug的配置,比如opcache.jit_debug=0xff,將會有更多的信息輸出。

好了,JIT的使用就簡單介紹到這里,關于JIT本身的實現等細節,以后有時間,我再來寫吧。

大家現在就可以去php.net下載PHP8來測試了 :)

thanks

到此這篇關于PHP8新特性之JIT案例講解的文章就介紹到這了,更多相關PHP8新特性之JIT內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • PHP8.0新功能之Match表達式的使用
  • php curl發起get與post網絡請求案例詳解
  • PHP如何刪除關聯數組中鍵值
  • PHP獲取文件屬性的最簡單方法
  • PHP中國際化的字符串排序和比較對象詳解

標簽:怒江 溫州 七臺河 白城 赤峰 酒泉 洛陽 金華

巨人網絡通訊聲明:本文標題《PHP8新特性之JIT案例講解》,本文關鍵詞  PHP8,新特性,新,特性,之,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP8新特性之JIT案例講解》相關的同類信息!
  • 本頁收集關于PHP8新特性之JIT案例講解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲最新在线观看| 亚洲三级在线观看| 欧美一级在线免费| 欧美老肥妇做.爰bbww视频| 日本精品免费观看高清观看| 99在线视频精品| 色呦呦国产精品| 欧美在线视频全部完| 欧美男人的天堂一二区| 欧美精品在线观看播放| 欧美精品色综合| 欧美成人激情免费网| 国产欧美视频一区二区| 国产精品全国免费观看高清| 国产精品无码永久免费888| 亚洲欧美经典视频| 天天综合天天做天天综合| 日本怡春院一区二区| 极品少妇xxxx偷拍精品少妇| 狠狠色狠狠色综合日日91app| 精品一区二区日韩| 成人国产一区二区三区精品| 91视频精品在这里| 日韩精品在线一区二区| 国产日韩影视精品| 亚洲不卡在线观看| 国产剧情av麻豆香蕉精品| 成人午夜在线免费| 欧美精品黑人性xxxx| 久久精品在线免费观看| 一区二区三区**美女毛片| 天堂成人国产精品一区| 国产91精品免费| 欧美精三区欧美精三区| 国产日韩欧美一区二区三区综合| 亚洲女性喷水在线观看一区| 日本视频免费一区| www.色精品| 日韩精品一区二区在线观看| 亚洲色图一区二区三区| 久久成人免费网| 欧美在线一二三四区| 久久亚洲免费视频| 亚洲va欧美va人人爽午夜 | 亚洲六月丁香色婷婷综合久久| 亚洲成人精品影院| 国产成人精品免费一区二区| 欧美视频精品在线观看| 国产精品美女久久久久aⅴ| 免费精品视频最新在线| 色婷婷av一区二区三区之一色屋| 精品电影一区二区三区| 午夜精品国产更新| 波多野结衣亚洲| 国产欧美一区二区精品忘忧草| 午夜国产精品一区| 色婷婷亚洲一区二区三区| 久久久久久电影| 精品制服美女丁香| 91精品国产综合久久久久久久久久| 国产精品高潮久久久久无| 激情都市一区二区| 日韩免费电影一区| 日韩精品乱码免费| 欧美男同性恋视频网站| 一区二区高清在线| 日本乱人伦一区| 亚洲美女一区二区三区| 99热在这里有精品免费| 中文字幕乱码久久午夜不卡| 国产剧情一区二区| 亚洲国产精品av| 岛国精品一区二区| 久久精品人人做| 成人晚上爱看视频| 中文字幕一区二区三区蜜月| 成人福利电影精品一区二区在线观看| 久久在线免费观看| 国产精品一区二区久激情瑜伽| 久久综合久久综合久久综合| 国精品**一区二区三区在线蜜桃 | 精品一区二区影视| 精品毛片乱码1区2区3区| 免费在线欧美视频| 亚洲精品在线三区| 国产麻豆一精品一av一免费| 久久亚洲精华国产精华液| 国产伦精品一区二区三区免费迷 | 麻豆精品国产91久久久久久| 欧美精品v国产精品v日韩精品 | 久久精品国产精品亚洲综合| 精品久久免费看| 国产91精品入口| 亚洲伦在线观看| 欧美日韩一区二区三区免费看| 亚洲国产精品一区二区www | 亚洲婷婷综合色高清在线| 色综合天天综合网天天狠天天| 亚洲一区二区在线免费看| 欧美人狂配大交3d怪物一区| 精品一区二区成人精品| 国产欧美日韩在线看| 一道本成人在线| 裸体健美xxxx欧美裸体表演| 中文字幕av不卡| 欧美日韩色综合| 国产精品资源网| 亚洲国产视频一区| 久久精品在线免费观看| 欧美最猛性xxxxx直播| 久草精品在线观看| 亚洲人亚洲人成电影网站色| 欧美精品九九99久久| 处破女av一区二区| 婷婷开心激情综合| 中文字幕av在线一区二区三区| 欧美区在线观看| jizzjizzjizz欧美| 裸体一区二区三区| 亚洲国产一二三| 国产亚洲综合在线| 欧美精品一二三| 99国产麻豆精品| 国产制服丝袜一区| 青青草97国产精品免费观看无弹窗版| 中文字幕第一区第二区| 欧美一区二区三区在| 91麻豆成人久久精品二区三区| 精品中文字幕一区二区小辣椒| 亚洲午夜精品在线| 中文字幕日韩精品一区| ww久久中文字幕| 在线播放中文字幕一区| 91在线免费看| av激情成人网| 国产91高潮流白浆在线麻豆| 麻豆久久一区二区| 日韩精品免费视频人成| 亚洲超丰满肉感bbw| 亚洲同性gay激情无套| 国产女主播一区| 国产三级一区二区| 久久久久久综合| 国产亚洲欧洲997久久综合 | 欧美一区二区黄色| 欧美日韩国产美| 欧美色视频在线观看| 欧美日韩一级二级| 欧美日韩一区二区三区四区五区| 色猫猫国产区一区二在线视频| 国产成人在线免费观看| 国产酒店精品激情| 黑人巨大精品欧美黑白配亚洲| 美女视频一区二区三区| 日产国产欧美视频一区精品| 日韩电影在线一区二区三区| 午夜精彩视频在线观看不卡| 亚洲国产精品一区二区久久恐怖片 | 欧美视频一区二区三区在线观看| 色一情一伦一子一伦一区| 91热门视频在线观看| 日本国产一区二区| 在线影院国内精品| 欧美人狂配大交3d怪物一区| 日韩三级在线免费观看| 91精品国产综合久久香蕉的特点| 欧美一区在线视频| 精品国产不卡一区二区三区| 欧美极品美女视频| 亚洲毛片av在线| 人人精品人人爱| 国产精一品亚洲二区在线视频| 波多野结衣在线一区| 在线看国产一区二区| 91精品国产综合久久福利软件 | 欧美丰满一区二区免费视频| 6080亚洲精品一区二区| 久久久噜噜噜久久中文字幕色伊伊| 国产精品久久久久久久久免费樱桃| 亚洲欧美激情插| 麻豆中文一区二区| 成人av电影在线播放| 欧美日韩国产一二三| 精品国产乱子伦一区| 最新热久久免费视频| 日韩av电影天堂| jlzzjlzz亚洲女人18| 欧美一区二区视频网站| 欧美激情一区二区三区四区 | 2019国产精品| 夜夜嗨av一区二区三区四季av| 免费xxxx性欧美18vr| 91亚洲永久精品| 日韩欧美一级精品久久| 亚洲图片激情小说| 韩国av一区二区| 欧美日韩国产片| 国产精品成人网| 国产一区二区三区精品视频| 欧美在线观看一二区|