ホームページ > バックエンド開発 > PHP7 > PHP7 は本当に強力ですか?

PHP7 は本当に強力ですか?

醉折花枝作酒筹
リリース: 2023-02-18 07:04:01
転載
2053 人が閲覧しました

PHP7 が正式リリースされてから 1 年半が経ちましたが、登場当初は旧バージョンに比べて数倍高速化したと言われていました PHP7 上で動作するさまざまなオープンソース フレームワークやシステムの速度と効率とにかくメディアも開発者もみんな炎上を煽っている、いや称賛に満ちているはずだ。今日はそれをテストして効果を確認します。

PHP7 は本当に強力ですか?

PHP7 が正式にリリースされてから 1 年半が経過しましたが、最初にリリースされたときは、古いバージョンよりも数倍高速であると言われていました。 PHP7で高速かつ高効率に動作するソースフレームワークやシステムは数倍に増えており、とにかくメディアも開発者も炎上を煽っていて、いや、賞賛の声が溢れているはずだ。

私は何も言わずにただ静かに見守るだけです。

一般的に、罠にはまりたくないので、私は携帯電話システムをアップグレードする最後の人です。結局のところ、最もハッキングされた言語は言うまでもなく、iOS や Android のようなシステムにはバグが存在します。世界で。

今日は、PHP7 が伝説どおりに素晴らしいかどうかを確認するときが来ました。

2 つの PHP バージョンをインストールする

http://php.net/ PHP7 の最新バージョンはすでに存在しており、自分でダウンロードできます。

PHP5 と PHP7 (PHP6 は放棄され、苦境に立たされました) のパフォーマンスをテストするために、2 つの PHP バージョンを異なるディレクトリにインストールしました。

インストールプロセスはスキップされます。ソースコードのインストールまたはパッケージ管理ツールのインストールに関係なく、独自のパスを覚えておいてください。

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
ログイン後にコピー

環境の説明: 最良のテスト効果を保証するために、このテストは運用環境に近い環境で直接実行されます。本当の状況。

オペレーティング システム: CentOS 7.2 64 ビット

基本構成: 1 コア 1GB 1Mbps

ホスト ブランド: Tencent Cloud

PHP7 と PHP5 の対決

1. 純粋な php スクリプト テスト

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 バージョン テスト:

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 バージョン テスト:

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
ログイン後にコピー

合格 データからわかるように、純粋な PHP スクリプト テストを通じて、PHP7 のパフォーマンスが 3 ~ 4 倍向上していることがわかります。

2.php データベース操作テスト

最初にユーザー テーブルを作成します:

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
ログイン後にコピー

test_user テーブルにデータを挿入します:

insert into test_user (uid,name) values (1,"dada");
MariaDB [test]> select * from test_user;
+-----+------+
| uid | name | +-----+------+ | 1 | dada | +-----+------+
ログイン後にコピー

Createデータベース テスト スクリプト test_db.php では、両方の PHP バージョンに PDO 拡張機能がインストールされていることを確認してください。

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

/usr/local/php7/bin/php -m|grep pdo
pdo_mysql
pdo_sqlite
ログイン後にコピー

私の 2 つの PHP バージョンには PDO がインストールされています (php_mysql 拡張機能はもう使用しないでください。これは時代遅れで、PHP7 は完全に放棄されており、mysqli は推奨されません)。

次に、PDO を使用して、選択実行のパフォーマンス比較を 500,000 回テストするスクリプトを作成します。

$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_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_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
ログイン後にコピー

今回、スクリプトは 500,000 クエリを実行しました。PHP7 で実行されたスクリプトのユーザー実行時間は、PHP5 よりもほぼ 1 秒短縮されました。 1ミリ秒ではなく、1秒減ります。

3.PHP フレームワーク テスト

  • thinkphp

中国では間違いなく thinkphp フレームワークが第一の選択肢であり、最新のものを選択してくださいphp5 を考えてください。 thinkphp5.0.9 バージョンを公式 Web サイトから直接ダウンロードしました。

  • (1) フレームワーク入口テスト

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 の方がわずかに高速であることがわかります。

  • (2) フレームワーク ロジック テスト
    フレームワーク入口の最初のステップのロジックを再利用します:
<?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 アーティスト フレームワークをテストします。

  • (1) フレームワークエントリーテスト
    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
ログイン後にコピー

PHP バージョン

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.081 秒でさえ、PHP7 バージョンの最も遅い 0.067 秒よりも遅いです。したがって、PHP7 の方がまだ優れています。

  • (2) フレームワーク ロジック テスト
    thinkphp と同じように、テスト ロジックを再利用して、小さなロジックを追加してみます。まず、laravel ルーティングを変更し、UserController のインデックス メソッドを直接呼び出します:
Route::get(&#39;/&#39;, &#39;UserController@index&#39;);
ログイン後にコピー

インデックス メソッドにテスト ロジックを記述します:

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 倍向上しました

推奨学習:

php ビデオ チュートリアル

結論:

この記事では PHP7 についてレビューしていますが、PHP5 を単純に比較すると、確かにパフォーマンスが 3 ~ 4 倍向上していることがわかり、PHP 純粋なスクリプトでもフレームワークでも、PHP7 の高いパフォーマンスは一貫しています。

PHP7 は高速です。PHP7 OpCache は高速です。PHP7 は本当に素晴らしいです。PHP の新時代が到来しました。すぐに使ってください。

以上がPHP7 は本当に強力ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート