站長資訊網
        最全最豐富的資訊網站

        雖遲但到!PHP8測評來了~

        6月25號php 8 alpha 1發布,7月9號 php 8 alpha 2發布,一般alpha 2是一個稍微能用的版本,所以周末測評了一下php8 JIT到底是個什么?

        先看一下結果:

        JIT不開啟的情況下

        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開啟的情況下:

        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

        還有不打開Opcache的情況下:

        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 : 2.299s 開啟Opcache不開啟JIT情況下:1.419s 開啟Opcache且開啟JIT情況下:0.155s

        開啟JIT情況下是不開啟JIT情況下的接近9.15倍,多次測試這個值穩定在8倍到10倍之間。

        MPF表現如何?

        為了接近我們的業務,所以在mpf框架下進行測試

        環境

        aliyun centos 6.9

        php7.test.com php-fpm一個進程 php8.test.com php-fpm一個進程

        Mpf兩個接口

        /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); }

        我們壓測一下

        php7 計算少情況

        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 計算多情況

        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開啟計算少情況

        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開啟計算多情況

        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關閉計算少情況

        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

        php8 JIT關閉計算多情況

        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

        [image:BA1A37D8-760E-4637-901B-3E3521F969E7-4107-0000191504DD1B2E/86D37899-3B46-4BDA-B396-E5C8DD51068E.png]

        雖遲但到!PHP8測評來了~

        發現計算少情況下php8JIT是php7性能的13倍,而且計算越多優化越明顯,計算多情況下php8JIT是php7性能的25.7倍。

        但是有一個問題我覺得很神奇php8無JIT計算少的情況居然也優化了很多,我以為是測試方向的問題,但是經過多次論證,這個數據是準確的,有時間想找一下這里的優化點是什么。

        編譯過程

        吐槽:php手動編譯越來越麻煩了,編譯了2個小時才編譯完,踩了N個坑,為了讓大家多寫幾個需求,把坑分享出來

        環境

        aliyun centos 6.9,咱們公司一般都是這個版本。

        php源碼編譯

        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復制代碼

        這里一般都是makefile生成失敗的,后面有生成失敗的例子,生成成功后

        make -j 8  make install  cp php.ini-production /yourdir/php8/etc/php.ini

        配置php.ini

        記住一定要把opcache.ini舊的配置也寫上,JIT說到底還是對Opcache的優化。

        zend_extension=opcache.so opcache.enable=1  ; 命令行測試的話這里一定要打開 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

        configure失敗解決方法

        這里解決./configure 失敗的一些問題

        問題一
        No package 'sqlite3' found

        解決辦法

        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"復制代碼

        注意

        直接這樣是不行的,yum倉庫里的版本太低。

        yum install sqlite-devel

        問題二

        configure: error: Please reinstall the iconv library.

        解決辦法

        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

        問題三

        No package 'oniguruma' found

        同樣yum也是不行的,版本太低。

        yum install oniguruma-devel

        解決辦法

        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"

        問題四

        No package 'libzip' found

        解決辦法

        wget https://libzip.org/download/libzip-1.7.2.tar.gz  tar -zxf libzip-1.7.2.tar.gzcd libzip-1.7.2  cmake3 -DCMAKE_INSTALL_PREFIX=/usr/local/lib/libzip-1.7.2  make   make installexport PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/libzip-1.7.2/lib/pkgconfig"復制代碼

        Enjoy php 8 & JIT !

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产91精品在线观看| 精品久久久久久综合日本| 久久精品水蜜桃av综合天堂| 国产精品美女网站在线观看| 成人国内精品久久久久一区 | 成人午夜精品网站在线观看 | 午夜精品久久久内射近拍高清| 亚洲国产精品嫩草影院| 国产在线精品一区二区在线观看| 下载天堂国产AV成人无码精品网站| 国产福利电影一区二区三区,亚洲国模精品一区 | 亚洲午夜国产精品无码老牛影视| 国产乱人伦精品一区二区在线观看 | 亚洲国产综合精品一区在线播放| 精品国产一区二区22| 丁香色婷婷国产精品视频| 国产精品成人va| 97久久久久人妻精品专区| 精品熟女少妇av免费久久| 亚洲日韩一页精品发布| 日批日出水久久亚洲精品tv | 精品一区二区在线观看| 国产精品久久久久AV福利动漫 | 日韩精品一区二区三区中文字幕| 国产精品性爱| 国产精品哟女在线观看| 亚洲国产精品嫩草影院| 亚洲国产精品国自产拍电影| 2021国产精品视频网站| 91亚洲精品麻豆| 国产激情精品一区二区三区| 国产精品综合久成人| 精品露脸国产偷人在视频| 国产一区二区三区精品视频 | 精品久久人人做人人爽综合| 精品人妻系列无码人妻免费视频| 国产亚洲精品无码拍拍拍色欲 | 国产精品麻豆入口| 精品久人妻去按摩店被黑人按中出| 久久国产美女免费观看精品 | 久久精品国产精品青草|