Home  >  Article  >  Backend Development  >  Is PHP7 really that powerful?

Is PHP7 really that powerful?

醉折花枝作酒筹
醉折花枝作酒筹forward
2021-07-07 09:38:001946browse

It has been a year and a half since PHP7 was officially released. When it first came out, it was said to be several times faster than the old version. The speed and efficiency of various open source frameworks or systems running on PHP7 have increased several times. Anyway, whether it is the media or developers They are all fanning the flames, no, they should be full of praise. Today we will test it and see the effect.

Is PHP7 really that powerful?

It has been a year and a half since PHP7 was officially released. When it first came out, it was claimed to be several times faster than the old version. Various open source frameworks or systems run on PHP7 with high speed and efficiency. It has increased several times. Anyway, both the media and developers are fanning the flames. No, they should be full of praise.

I will just watch you show off quietly and say nothing.

Generally, I am the last person to upgrade mobile phone systems because I don’t want to step into the trap. After all, systems like iOS and Android will have bugs, not to mention the most hacked languages ​​in the world.

The time has come today to see if PHP7 is as awesome as the legend says.

Install two PHP versions

http://php.net/ There is already the latest version of PHP7, you can download it yourself.

In order to test the performance of PHP5 and PHP7 (PHP6 has been abandoned, distressed 1s), I installed two php versions in different directories.

The installation process is skipped. Regardless of source code installation or package management tool installation, just remember your own path.

PHP7:

# /usr/local/php7/bin/php -v
PHP 7.1.5 (cli) (built: May 13 2017 23:36:41) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

PHP5:

# /usr/bin/php -v
PHP 5.6.30 (cli) (built: Jan 19 2017 22:31:39) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Environment description: In order to ensure the best test effect, this test is conducted directly in the production environment, which is closer to the real situation.

Operating system: CentOS 7.2 64-bit

Basic configuration: 1 core 1GB 1Mbps

Host brand: Tencent Cloud

Confrontation between PHP7 and PHP5

1. Pure php script test

vim test.php

$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 version test:

time /usr/bin/php test.php 
real    0m0.301s
user    0m0.239s
sys     0m0.050s
--------------------------
time /usr/bin/php test.php
real    0m0.310s
user    0m0.241s
sys     0m0.054s
--------------------------
time /usr/bin/php test.php
real    0m0.289s
user    0m0.238s
sys     0m0.050s

PHP7 version test:

time /usr/local/php7/bin/php test.php

real    0m0.087s
user    0m0.063s
sys     0m0.024s
-------------------------------------
time /usr/local/php7/bin/php test.php

real    0m0.106s
user    0m0.073s
sys     0m0.033s
--------------------------------------
time /usr/local/php7/bin/php test.php

real    0m0.083s
user    0m0.061s
sys     0m0.022s

passed It can be seen from the data that through pure PHP script testing, it can be seen that the performance of PHP7 has been improved by 3 to 4 times.

2.php database operation test

First we create a user table:

Table: test_user
Create Table: CREATE TABLE `test_user` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(100) NOT NULL DEFAULT &#39;&#39;, PRIMARY KEY (`uid`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

Insert a piece of data into the test_user table:

insert into test_user (uid,name) values (1,"dada");
MariaDB [test]> select * from test_user;
+-----+------+
| uid | name | +-----+------+ | 1 | dada | +-----+------+

Create a database test script test_db.php, make sure both your PHP versions have the PDO extension installed.

/usr/bin/php -m|grep pdo
pdo_mysql
pdo_sqlite

/usr/local/php7/bin/php -m|grep pdo
pdo_mysql
pdo_sqlite

My two PHP versions have PDO installed (do not use the php_mysql extension anymore, it is outdated, PHP7 has been completely abandoned, and mysqli is not recommended).

Next we write a script through PDO to test the performance comparison of select execution 500,000 times:

$host = "yourHost";
$user = "yourUser";
$pass = "yourPass";
$db   = "test"; 
$port = 3306; 
try { 
    $dbh = new PDO("mysql:host=$host;dbname=$db", $user, $pass); 
    echo "Connected<p>"; 
} 
catch (Exception $e) { 
    echo "Unable to connect: " . $e->getMessage() ."<p>"; 
    } 
$sql = "select SQL_NO_CACHE * from test_user;"; 
$tmp = array(); 
for ($i=1; $i<=500000; $i++) { 
    $ret = $dbh->query($sql); 
    foreach ($ret as $row) { 
        $tmp[&#39;id&#39;] = $row[&#39;id&#39;]; 
        $tmp[&#39;name&#39;] = $row[&#39;name&#39;]; 
        } 
    }

PHP5 test test_db.php:

time /usr/bin/php test_db.php
real    0m48.396s
user    0m11.149s  
sys     0m3.998s

real    0m51.447s
user    0m11.800s
sys     0m4.395s

real    0m51.517s
user    0m11.733s
sys     0m4.439s

PHP7 test test_db.php:

real    0m47.900s
user 0m9.875s 
sys 0m4.130s 
real 0m46.977s 
user 0m9.760s 
sys 0m3.983s 
real 0m50.010s 
user 0m10.268s 
sys 0m4.307s

This time the script executed 500,000 queries. The user execution time of the script executed by PHP7 is almost one second less than that of PHP5! It's one second less, not one millisecond.

3.PHP framework test

  • thinkphp

The thinkphp framework is definitely the first choice in China, choose the latest thinkphp5. I downloaded the thinkphp5.0.9 version directly from the official website.

  • (1) Framework entrance test

Test under 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

Test under 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

at the entrance After testing, you can see that there is not much difference between PHP and PHP7, but PHP7 is still slightly faster.

  • (2) Framework logic test
    Reuse the logic of the first step at the framework entrance:
<?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 version:

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 Version:

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

Using the PHP7 version in the thinkphp framework, the performance improvement is about 4 times that of the PHP5 version!

  • laravel

Then we test the most popular PHP artist framework.

  • (1) Framework entry test
    PHP5 version:
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

PHP version

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

We can see that laravel’s framework entry test is in progress , the performance difference between PHP5 and PHP7 is not big, but even the fastest 0.081s of PHP5 is slower than the slowest 0.067s of the PHP7 version. So PHP7 is still better.

  • (2) Framework logic test
    Try to add a little logic, just like thinkphp, reuse the test logic. First modify the laravel routing and directly call the index method of UserController:
Route::get(&#39;/&#39;, &#39;UserController@index&#39;);

Write the test logic in the index method:

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 version

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 version

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 performance has been improved by 3 to 4 times

Recommended learning:php video tutorial

Conclusion:

This article has a review on PHP7 and A simple comparison of PHP5 shows that the performance is indeed improved by 3 to 4 times. Whether in PHP pure scripts or in frameworks, PHP7's high-performance performance is consistent.

PHP7 is fast, PHP7 OpCache is fast, PHP7 is really awesome, a new era of PHP has arrived, use it quickly!

The above is the detailed content of Is PHP7 really that powerful?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete