亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

提升PHP性能之改變Zend引擎分發方式

2020-03-22 19:00:37
字體:
來源:轉載
供稿:網友
從PHP5.1開始,PHP提供了用戶對Zend VM執行分發方式的選擇接口.

  之前的文章中, 我也提過這方面的內容, Zend虛擬機在執行的時候, 對于編譯生成的op_array中的每一條opline的opcode都會分發到相應的處理器(zend_vm_def.h定義)執行, 而按照分發的方式不同, 分發過程可以分為CALL, SWITCH, 和GOTO三種類型.

  默認是CALL方式, 也就是所有的opcode處理器都定義為函數, 然后虛擬機調用. 這種方式是傳統的方式, 也一般被認為是最穩定的方式.

  SWITCH方式和GOTO方式則和其命名的意義相同, 分別通過switch和goto來分發opcode到對應的處理邏輯(段).

  官方給出的描述是:

  CALL – Uses function handlers for opcodes

  SWITCH – Uses switch() statement for opcode dispatch

  GOTO – Uses goto for opcode dispatch (threaded opcodes architecture)

  GOTO is usually (depends on CPU and compiler) faster than SWITCH, which

  tends to be slightly faster than CALL.

  CALL is default because it doesn’t take very long to compile as opposed

  to the other two and in general the speed is quite close to the others.

  那么如果使用GOTO方式, 效率上到底能提高多少呢?

  今天我就分別使用各種方式來測試一番, 測試腳本bench.php.

  第一點被證明的就是, 官方說的GOTO方式編譯耗時顯著高于其他倆種方式, 我一開始在虛擬機上編譯, 每次都Hangup(囧), 最后只好換了個強勁點的物理機, 大約3分鐘后, 編譯成功..

  測試環境:

  PHP 5.3.0 Linux

  AMD Opteron(tm) Processor 270(2G) X 4 6G Memory

  編譯參數:

  ./configure --with-zend-vm=CALL/GOTO/SWITCH

  測試結果如下(都是三次取中值):

  CALL方式:

  laruence@dev01.tc$ sapi/cli/php bench.php

  simple 0.358

  simplecall 0.418

  simpleucall 0.405

  simpleudcall 0.424

  mandel 1.011

  mandel2 1.238

  ackermann(7) 0.375

  ary(50000) 0.083

  ary2(50000) 0.075

  ary3(2000) 0.561

  fibo(30) 1.156

  hash1(50000) 0.114

  hash2(500) 0.091

  heapsort(20000) 0.270

  matrix(20) 0.276

  nestedloop(12) 0.599

  sieve(30) 0.350

  strcat(200000) 0.039

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

  Total 7.844

  SWITCH方式:

  laruence@dev01.tc$ sapi/cli/php bench.php

  simple 0.393

  simplecall 0.414

  simpleucall 0.424

  simpleudcall 0.445

  mandel 1.007

  mandel2 1.254

  ackermann(7) 0.392

  ary(50000) 0.084

  ary2(50000) 0.073

  ary3(2000) 0.593

  fibo(30) 1.185

  hash1(50000) 0.120

  hash2(500) 0.092

  heapsort(20000) 0.285

  matrix(20) 0.295

  nestedloop(12) 0.678

  sieve(30) 0.359

  strcat(200000) 0.042

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

  Total 8.138

  GOTO方式 :

  laruence@dev01.tc$ sapi/cli/php bench.php

  simple 0.306

  simplecall 0.373

  simpleucall 0.369

  simpleudcall 0.385

  mandel 0.879

  mandel2 1.132

  ackermann(7) 0.356

  ary(50000) 0.081

  ary2(50000) 0.073

  ary3(2000) 0.525

  fibo(30) 1.043

  hash1(50000) 0.111

  hash2(500) 0.088

  heapsort(20000) 0.247

  matrix(20) 0.247

  nestedloop(12) 0.519

  sieve(30) 0.331

  strcat(200000) 0.037

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

  Total 7.103

  可見, GOTO方式最快, SWITCH方式最慢.和官方的描述稍有不符.

  GOTO方式比其默認的CALL方式, 性能提升還是比較明顯的.

  所以, 如果你希望讓PHP發揮到機制, 改變Zend VM的分發方式, 也可以做為一個考慮因素.

  附:

  使用GOTO方式的configure選項:

  --with-zend-vm=GOTO

  也可以在Zend目錄下使用:

  php zend_vm_gen.php --with-vm-kind=[CALLGOTOSWITH]

  測試腳本bench.php

  

  /**

  * PHP Perf Bench Test Script

  */

  function simple() {

  $a = 0;

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

  $a++;

  $thisisanotherlongname = 0;

  for ($thisisalongname = 0; $thisisalongname < 1000000; $thisisalongname++)

  $thisisanotherlongname++;

  }

  /****/

  function simplecall() {

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

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美黄色性视频| 欧美亚洲一级片| 精品国产鲁一鲁一区二区张丽| 另类美女黄大片| 亚洲欧美三级在线| 久久久中精品2020中文| 午夜精品久久久久久久男人的天堂| 成人黄色午夜影院| 欧美日韩亚洲91| 日韩一级黄色av| 激情av一区二区| 久久在线视频在线| 日韩a**站在线观看| 欧美超级免费视 在线| 久久久久久久久久亚洲| 国产亚洲一区二区在线| 午夜精品视频网站| 午夜免费久久久久| 精品福利在线看| 97色在线观看免费视频| 日本一区二区三区在线播放| 久久在线精品视频| 久久人人爽人人爽爽久久| 国产一区二区三区三区在线观看| 久久久久久91香蕉国产| 岛国精品视频在线播放| 国产午夜一区二区| 日产精品99久久久久久| 国产精品一区专区欧美日韩| 亚洲国产精品一区二区三区| 91国产美女视频| 色综合天天综合网国产成人网| 亚洲人成电影网站色xx| 日韩视频永久免费观看| 色偷偷88888欧美精品久久久| 91手机视频在线观看| 欧美日韩中文在线| www.久久久久| 日韩欧美在线视频日韩欧美在线视频| 亚洲精品日产aⅴ| 亚洲资源在线看| 国产精品九九久久久久久久| 国产精品视频地址| 最近中文字幕mv在线一区二区三区四区| 久久久精品2019中文字幕神马| 亚洲欧美中文另类| 疯狂做受xxxx欧美肥白少妇| 97在线免费观看视频| 亚洲免费高清视频| 久久99精品视频一区97| 亚洲精品视频免费在线观看| 成人免费激情视频| 日韩美女在线播放| 成人黄色中文字幕| 午夜精品久久久久久久久久久久久| 亚洲激情视频在线播放| 日韩免费看的电影电视剧大全| 久久久久久高潮国产精品视| 日韩视频亚洲视频| 欧美性色xo影院| 亚洲视频在线观看视频| 欧美色视频日本版| 国产一区二区在线免费| 性欧美亚洲xxxx乳在线观看| 日韩精品视频免费专区在线播放| 国产成人jvid在线播放| 久久99久久99精品中文字幕| 77777亚洲午夜久久多人| wwwwwwww亚洲| 久久色免费在线视频| 欧美黑人巨大精品一区二区| 97久久精品人人澡人人爽缅北| 亚洲国产精品成人精品| 69久久夜色精品国产69| 亚洲精品一区二区三区婷婷月| 色综合天天狠天天透天天伊人| 国产99久久精品一区二区 夜夜躁日日躁| 日韩免费av在线| 国产中文字幕亚洲| 欧美精品精品精品精品免费| 成人h视频在线| 97视频在线观看网址| 亚洲国产女人aaa毛片在线| 精品性高朝久久久久久久| 国产91|九色| 亚洲第一页中文字幕| 国产精品成人免费电影| 欧美色播在线播放| 亚洲欧美在线一区| 国产综合在线观看视频| 免费不卡在线观看av| 国产成人精品一区二区| yw.139尤物在线精品视频| 久久亚洲精品网站| 成人一区二区电影| 亚洲欧美日韩一区在线| 欧美成人国产va精品日本一级| 久热精品视频在线观看| 九九热视频这里只有精品| 在线观看视频亚洲| 久久久久久久久久av| 欧美成在线视频| 精品亚洲一区二区三区| 国产精品久久久久久久久久久久久久| 综合136福利视频在线| 亚洲精品视频免费在线观看| 免费av一区二区| 日韩在线视频免费观看高清中文| 国产一区二区三区直播精品电影| 国产亚洲人成网站在线观看| 日韩激情在线视频| 人人澡人人澡人人看欧美| 久久久久久久影院| 国产精品自产拍高潮在线观看| 欧洲一区二区视频| 精品福利一区二区| 欧美精品videosex牲欧美| 高清亚洲成在人网站天堂| 国产精品成人aaaaa网站| 欧美亚洲第一页| 精品精品国产国产自在线| 91亚洲精品久久久久久久久久久久| 日韩av一区二区在线| xvideos国产精品| 26uuu亚洲伊人春色| 国产激情综合五月久久| 亚洲人成人99网站| 国产精品电影在线观看| 久久久久久网址| 亚洲精品国产精品久久清纯直播| 国产精品福利小视频| 亚洲美女福利视频网站| 国产精品久久久久久久久免费看| 国产精品美女午夜av| 精品久久中文字幕久久av| 高清亚洲成在人网站天堂| 国产成人精品免高潮费视频| 欧美激情手机在线视频| 国产精品精品一区二区三区午夜版| 国产91在线播放精品91| 国产精品三级久久久久久电影| 国产精品吊钟奶在线| 欧美裸身视频免费观看| 午夜精品久久久久久久99热浪潮| 欧美激情视频在线| 在线观看日韩av| 欧美一区第一页| 欧美第一淫aaasss性| 久热精品视频在线免费观看| 日韩电影在线观看免费| 亚洲精品短视频| 日韩成人激情在线| 日本亚洲精品在线观看| 97久久精品人搡人人玩| 成人黄色av免费在线观看| 国产亚洲日本欧美韩国| 91精品国产自产在线| 国产欧美一区二区三区在线| 亚洲第一页在线| 欧洲永久精品大片ww免费漫画| 精品久久中文字幕| 成人h视频在线观看播放| 在线精品91av| 狠狠色香婷婷久久亚洲精品|