本文作者:心月

php框架在php7和php5中的性能对比

心月IT博客 11-15
php框架在php7和php5中的性能对比摘要:前面已经通过案例分析过了php7和php5的原生开发程序性能对比,接下来将要分析php框架分别在php7和php5中运行的情况。

        前面已经通过案例分析过了php7和php5的原生开发程序性能对比,接下来将要分析php框架分别在php7和php5中运行的情况。

thinkphp

国内肯定是首选thinkphp框架,选择的是thinkphp5.0.9版本。我这里直接在官网下载的

(一)框架入口测试

PHP5下的测试:

time /usr/bin/php ./public/index.php
real    0m0.036s
user    0m0.026s
sys     0m0.010s
 
real    0m0.038s
user    0m0.026s
sys     0m0.012s
 
real    0m0.041s
user    0m0.032s
sys     0m0.009s

PHP7下的测试:

time /usr/local/php7/bin/php ./public/index.php
real    0m0.027s
user    0m0.021s
sys     0m0.005s
 
real    0m0.027s
user    0m0.018s
sys     0m0.009s
 
real    0m0.025s
user    0m0.023s
sys     0m0.002s

在入口测试下,可以看到PHP和PHP7没有太大的区别,但PHP7还是稍微快一点。

(二)框架逻辑测试
在框架入口复用第一步的逻辑:

<?php
namespace app\index\controller;
 
class Index
{
    public function index()
    {
       $arr = array();
       for ($i = 0; $i < 500000; $i++) {
           $arr[$i] = $i;
       }
 
       $tmp = array();
       foreach ($arr as $i) {
           if ($i % 2 == 0) {
               $is_exists = array_key_exists($i, $arr);
               if ($is_exists) {
                   array_push($tmp, $i);
               }
          }
      }
    }
}

PHP5版本:

time /usr/bin/php ./public/index.php
real    0m0.538s
user    0m0.463s
sys     0m0.072s
 
real    0m0.454s
user    0m0.386s
sys     0m0.065s
 
real    0m0.387s
user    0m0.331s
sys     0m0.055s

PHP7版本:

time /usr/local/php7/bin/php ./public/index.php
real    0m0.150s
user    0m0.123s
sys     0m0.024s
 
real    0m0.137s
user    0m0.105s
sys     0m0.031s
 
real    0m0.123s
user    0m0.096s
sys     0m0.026s

在thinkphp框架中使用PHP7版本,性能提升大约是PHP5版本的4倍!


laravel

然后我们测试下现在最火热的PHP艺术家的框架。

(一) 框架入口测试
PHP5版本:

time /usr/bin/php ./public/index.php
 
real    0m0.104s
user    0m0.081s
sys     0m0.022s
 
real    0m0.148s
user    0m0.122s
sys     0m0.025s
 
real    0m0.122s
user    0m0.100s
sys     0m0.021s

PHP7版本:

time /usr/local/php7/bin/php ./public/index.php
 
real    0m0.079s
user    0m0.064s
sys     0m0.015s
 
real    0m0.081s
user    0m0.067s
sys     0m0.014s
 
real    0m0.067s
user    0m0.054s
sys     0m0.013s

我们可以看到laravel的框架入口测试中,PHP5和PHP7的表现差异不大,但即使PHP5最高快的0.081s也比PHP7版本最慢的0.067s要慢。所以PHP7还是更胜一筹。

(二)框架逻辑测试
尝试增加一点逻辑,和thinkphp一样,复用测试逻辑。
首先修改laravel路由,直接调用UserController的index方法:

Route::get('/', 'UserController@index');

在index方法中写入测试逻辑:

public function index()
{
      $arr = array();
       for ($i = 0; $i < 500000; $i++) {
           $arr[$i] = $i;
       }
 
       $tmp = array();
       foreach ($arr as $i) {
           if ($i % 2 == 0) {
               $is_exists = array_key_exists($i, $arr);
               if ($is_exists) {
                   array_push($tmp, $i);
               }
          }
      }
}

PHP5版本:

time /usr/bin/php ./public/index.php
real    0m0.510s
user    0m0.377s
sys     0m0.079s
 
real    0m0.627s
user    0m0.447s
sys     0m0.091s
 
real    0m0.519s
user    0m0.436s
sys     0m0.079s

PHP7版本:

time /usr/local/php7/bin/php ./public/index.php
 
real    0m0.201s
user    0m0.167s
sys     0m0.032s
 
real    0m0.216s
user    0m0.174s
sys     0m0.040s
 
real    0m0.169s
user    0m0.134s
sys     0m0.034s

PHP7性能提升了3到4倍

压力测试

1000个请求,50个并发

PHP5版本:

php框架在php7和php5中的性能对比

三次样本如下:

php框架在php7和php5中的性能对比

php框架在php7和php5中的性能对比

php框架在php7和php5中的性能对比

PHP7版本:

php框架在php7和php5中的性能对比

php框架在php7和php5中的性能对比

通过压力测试,在PHP7版本下,可以看到单个请求时间和请求完成时间以及每个连接请求实际运行时间的平均值都耗时更少,最重要的性能指标QPS也是高于PHP5的版本。


PHP7的opcache性能测试

开启opcache:


PHP7的opcache性能测试

PHP7的opcache性能测试

PHP7的opcache性能测试

PHP7的opcache性能测试

卧槽!开启了opcache的PHP7果然是要起飞的节奏,相比未开启的PHP7性能提升了十几倍,相比PHP5提升了将进20倍!问你怕不怕!

PHP脚本测试数据如下:

PHP7的opcache性能测试

PHP7 vs PHP5.png

纯php脚本测试过程,PHP7性能大约是PHP5的3到4倍。

压力测试数据如下:

PHP7的opcache性能测试

PHP5 vs PHP7 vs PHP7+OPCACHE.png

结论:

        本文对PHP7和PHP5进行简单对比,性能确实有3到4倍提升,无论是在php纯脚本中,还是在框架中,PHP7高性能的表现都是一致的。

        PHP7很快,PHP7+OpCache飞快,PHP7确实牛逼,PHP的新时代已来临,赶紧用起来!

【文章来源:PHP中文网,原文地址:https://www.php.cn/php-weizijiaocheng-407644.html

文章版权及转载声明:

本文由 心月IT技术博客 博主整理于 11-15
若转载请注明原文及出处:https://www.xinyueseo.com/other/503.html

分享到:
赞(
发表评论
快捷输入:

验证码

    评论列表 (有 0 条评论,人围观)参与讨论