Home > Article > Backend Development > Is PHP7 so awesome (horizontal comparison of php7.1 and php5.6)
Recommended (free): PHP7
PHP7来一发
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 running on PHP7 are several times faster and more efficient. Anyway, no matter what Is it the media or developers who are fanning the flames, no, it 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
Competition 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.050sPHP7 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.022sIt can be seen from the data that the performance of php7 has been improved by 3 to 4 times through a simple PHP script test.
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 '', PRIMARY KEY (`uid`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8Insert 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 the database test script test_db.php and ensure that 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_sqliteMy 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['id'] = $row['id']; $tmp['name'] = $row['name']; } }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.439sPHP7 test test_db.php:
real 0m47.900suser 0m9.875s sys 0m4.130s real 0m46.977s user 0m9.760s sys 0m3.983s real 0m50.010s user 0m10.268s sys 0m4.307sThis 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
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.009sTest 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.002sat the entrance After testing, you can see that there is not much difference between PHP and PHP7, but PHP7 is still slightly faster.
<?phpnamespace 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.055sPHP7 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.026sUsing the PHP7 version in the thinkphp framework, the performance improvement is about 4 times that of the PHP5 version!
laravel
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.021sPHP 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.013sWe 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.
Route::get('/', 'UserController@index');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.079sPHP7 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.034sPHP7 performance has been improved by 3 to 4 times
The above is the detailed content of Is PHP7 so awesome (horizontal comparison of php7.1 and php5.6). For more information, please follow other related articles on the PHP Chinese website!