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.phpsimple 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.phpsimple 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免费学习笔记(深入)”;
php Zend/bench.phpsimple 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 output($a);}
登录后复制
我们压测一下
php7 计算少情况
wrk -c36 -d 5s -t12 https://php7.test.com/v1/hello/wzh/index1Running 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.78Transfer/sec: 23.85KB
登录后复制
php7 计算多情况
wrk -c36 -d 5s -t12 https://php7.test.com/v1/hello/wzh/index2Running 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 42Requests/sec: 13.91Transfer/sec: 4.29KB
登录后复制
php8 JIT开启计算少情况
wrk -c36 -d 5s -t12 https://php8.test.com/v1/hello/wzh/index1Running 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.55Transfer/sec: 340.43KB
登录后复制
php8 JIT开启计算多情况
wrk -c36 -d 5s -t12 https://php8.test.com/v1/hello/wzh/index2Running 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.76Transfer/sec: 121.23KB
登录后复制
php8 JIT关闭计算少情况
wrk -c36 -d 5s -t12 https://php8.test.com/v1/hello/wzh/index1Running 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.22Transfer/sec: 308.65KB
登录后复制
php8 JIT关闭计算多情况
wrk -c36 -d 5s -t12 https://php8.test.com/v1/hello/wzh/index2Running 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.22Transfer/sec: 14.31KB
登录后复制
[image:BA1A37D8-760E-4637-901B-3E3521F969E7-4107-0000191504DD1B2E/86D37899-3B46-4BDA-B396-E5C8DD51068E.png]

发现计算少情况下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.gztar -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 8make installcp php.ini-production /yourdir/php8/etc/php.ini
登录后复制
配置php.ini
记住一定要把opcache.ini旧的配置也写上,JIT说到底还是对Opcache的优化。
zend_extension=opcache.soopcache.enable=1; 命令行测试的话这里一定要打开opcache.enable_cli=1opcache.memory_consumption=512opcache.interned_strings_buffer=8opcache.max_accelerated_files=10000opcache.validate_timestamps=1opcache.revalidate_freq=300opcache.fast_shutdown=1opcache.enable_file_override = 1opcache.blacklist_filename = /etc/php.d/opcache.blacklist; 这里就是新的jit的配置opcache.jit=1205opcache.jit_buffer_size=64M
登录后复制
configure失败解决方法
这里解决./configure 失败的一些问题
问题一
No package 'sqlite3' found
登录后复制
解决办法
wget https://www.sqlite.org/2020/sqlite-autoconf-3320300.tar.gztar -zxf sqlite-autoconf-3320300.tar.gzcd sqlite-autoconf-3320300./configure --prefix=/usr/local/lib/sqlite-3.32.0make 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.gztar -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.gztar -zxf v6.9.5_rev1.tar.gzcd oniguruma-6.9.5_rev1/ autoreconf -vfi./configure --prefix=/usr/local/lib/oniguruma-6.9.5make 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.gztar -zxf libzip-1.7.2.tar.gzcd libzip-1.7.2cmake3 -DCMAKE_INSTALL_PREFIX=/usr/local/lib/libzip-1.7.2make make installexport PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/libzip-1.7.2/lib/pkgconfig"复制代码
登录后复制
Enjoy php 8 & JIT !
以上就是虽迟但到!PHP8测评来了~的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2166648.html