Heim  >  Artikel  >  Backend-Entwicklung  >  Was sind die Unterschiede zwischen PHP7 und PHP5? Vergleich zwischen PHP5 und PHP7

Was sind die Unterschiede zwischen PHP7 und PHP5? Vergleich zwischen PHP5 und PHP7

不言
不言Original
2018-08-06 15:21:0139632Durchsuche

In diesem Artikel erfahren Sie, was der Unterschied zwischen PHP7 und PHP5 ist. Der Vergleich zwischen PHP5 und PHP7 hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.

PHP7 kommt

Es ist eineinhalb Jahre her, seit PHP7 offiziell veröffentlicht wurde, und es hieß, es sei um ein Vielfaches schneller Die Geschwindigkeit und Effizienz des auf PHP7 laufenden Systems ist um ein Vielfaches gestiegen. Sowohl die Medien als auch die Entwickler schüren das Feuer.
Ich werde einfach zusehen, wie du still und wortlos zeigst.

Im Allgemeinen bin ich der Letzte, der Mobiltelefonsysteme aktualisiert, weil ich nicht in die Falle tappen möchte. Schließlich werden Systeme wie iOS und Android Fehler haben, ganz zu schweigen von den am häufigsten gehackten Sprachen ​in der Welt.

Heute ist es an der Zeit zu sehen, ob PHP7 so leistungsfähig ist, wie die Legende sagt.

Zwei PHP-Versionen installieren

http://www.php.cn/ Die neueste Version von PHP7 ist bereits verfügbar, Sie können sie selbst herunterladen.
Um die Leistung von PHP5 und PHP7 zu testen (PHP6 wurde aufgegeben, Distressed 1s), habe ich zwei PHP-Versionen in verschiedenen Verzeichnissen installiert.

Der Installationsprozess wird übersprungen, unabhängig von der Installation des Quellcodes oder des Paketverwaltungstools. Merken Sie sich einfach Ihren eigenen Pfad.

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

Umgebungsbeschreibung: Um den besten Testeffekt zu gewährleisten, wurde dieser Test direkt in der näher gelegenen Produktionsumgebung durchgeführt die reale Situation.
Betriebssystem: CentOS 7.2 64-Bit
Grundkonfiguration: 1 Kern 1 GB 1 Mbit/s
Hostmarke: Tencent Cloud

Konfrontation zwischen PHP7 und PHP5

1. Reiner PHP-Skripttest

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

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

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

Aus den Daten geht hervor, dass die Leistung von PHP7 durch einen einfachen PHP-Skripttest um das Drei- bis Vierfache verbessert wurde.

2. PHP-Datenbankbetriebstest

Zuerst erstellen wir eine Benutzertabelle:

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

Fügen Sie ein Datenelement in die test_user-Tabelle ein:

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

Erstellen Sie das Datenbanktestskript test_db.php und stellen Sie sicher, dass in beiden PHP-Versionen die PDO-Erweiterung installiert ist.

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

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

Auf meinen beiden PHP-Versionen ist PDO installiert (verwenden Sie die Erweiterung php_mysql nicht mehr, sie ist veraltet, PHP7 wurde komplett aufgegeben und mysqli wird nicht empfohlen).

Als nächstes schreiben wir ein Skript über PDO, um den Leistungsvergleich ausgewählter Ausführung 500.000 Mal zu testen:

$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

Dieses Mal hat das Skript 500.000 Abfragen ausgeführt. Die Benutzerausführungszeit des von PHP7 ausgeführten Skripts ist fast eine Sekunde kürzer als die von PHP5! Es ist eine Sekunde weniger, nicht eine Millisekunde.

3. PHP-Framework-Test

  • thinkphp

Inländische Bestätigung Es ist das Thinkphp-Framework erster Wahl. Wählen Sie das neueste Thinkphp5. Ich habe die Version thinkphp5.0.9 direkt von der offiziellen Website heruntergeladen.

  • (1) Framework-Einstiegstest

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

Im Eingangstest sieht man, dass es keinen großen Unterschied zwischen PHP und PHP7 gibt, PHP7 aber immer noch etwas schneller ist.

(2) Framework-Logiktest
Verwenden Sie die Logik des ersten Schritts am Framework-Eingang wieder:

<?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

Mit der PHP7-Version im thinkphp-Framework wird die Leistung verbessert Die Verbesserung beträgt etwa das Vierfache der PHP5-Version!

  • laravel

Dann testen wir das beliebteste PHP-Künstler-Framework.

  • (1) Framework-Eintrittstest
    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

Wir können sehen, dass im Framework-Einstiegstest von Laravel der Leistungsunterschied zwischen PHP5 und PHP7 nicht groß ist, aber obwohl PHP5 ist die schnellste Version von 0,081 s und ist auch langsamer als die langsamste PHP7-Version von 0,067 s. PHP7 ist also immer noch besser.

  • (2) Framework-Logiktest
    Versuchen Sie, eine kleine Logik wie thinkphp hinzuzufügen, um die Testlogik wiederzuverwenden.
    Ändern Sie zunächst das Laravel-Routing und rufen Sie direkt die Indexmethode von UserController auf:

Route::get(&#39;/&#39;, &#39;UserController@index&#39;);

Schreiben Sie die Testlogik in die Indexmethode:

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-Leistung um das 3- bis 4-fache verbessert

Stresstest

1000 Anfragen, 50 Parallelität

  • PHP5-Version:

Dreifachbeispiele lauten wie folgt:

PHP7-Version:

Durch den Stresstest können Sie unter der PHP7-Version die individuelle Anfragezeit und den Abschluss der Anfrage sehen Zeit und Die durchschnittliche tatsächliche Laufzeit jeder Verbindungsanforderung nimmt weniger Zeit in Anspruch, und der wichtigste Leistungsindikator QPS ist ebenfalls höher als bei der PHP5-Version.

Opcache-Leistungstest von PHP7

Opcache aktivieren:

Scheiße! PHP7 mit aktiviertem Opcache steht tatsächlich kurz vor dem Durchbruch. Im Vergleich zu PHP7, das nicht aktiviert wurde, hat sich die Leistung um mehr als das Zehnfache verbessert, und im Vergleich zu PHP5 hat sie sich um fast das 20-fache verbessert! Fragen Sie, ob Sie Angst haben!

PHP-Skripttestdaten lauten wie folgt:

PHP7 vs. PHP5.png

Reiner PHP-Skripttestprozess, die Leistung von PHP7 ist etwa 3 bis 4 Mal so hoch wie PHP5.

Die Stresstestdaten lauten wie folgt:

PHP5 vs. PHP7 vs. PHP7+OPCACHE.png

Fazit:

Dieser Artikel Ein einfacher Vergleich zwischen PHP7 und PHP5 zeigt, dass die Leistung tatsächlich um das Drei- bis Vierfache verbessert wird. Ob in reinen PHP-Skripten oder in Frameworks, die Hochleistungsleistung von PHP7 ist konstant.

PHP7 ist schnell, PHP7+OpCache ist schnell, PHP7 ist wirklich großartig, die neue Ära von PHP ist angebrochen, nutzen Sie es schnell!

Empfohlene verwandte Artikel:

Erklärung des Prinzips der Zeitfunktion strtotime() in PHP

Vergleich von ts und nts in PHP

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen PHP7 und PHP5? Vergleich zwischen PHP5 und PHP7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn