PHP 5 與 PHP 7 的效能對比

cn-five發表於2020-08-30

PHP 的直譯器為 Zend Engine ,進入原始碼包的 Zend 目錄,這是 PHP 最核心的部分,主要負責 PHP 的語法實現、記憶體管理及指令碼的編譯執行環境等。

/opt/softpackage/php-5.6.8/Zend
/opt/softpackage/php-7.2.33/Zend
/opt/softpackage/php-7.4.0/Zend

找到測試檔案 bench.php ,這個檔案裡編寫了很多測試程式碼,比如

// 執行一百萬次字串 hallo 長度的計算
function simplecall() {
  for ($i = 0; $i < 1000000; $i++)
    strlen("hallo");
}

執行 /usr/local/php-5.6.8/bin/php bench.php ,測試結果如下

simple             0.657
simplecall         1.980
simpleucall        1.712
simpleudcall       1.935
mandel             2.531
mandel2            2.860
ackermann(7)       1.101
ary(50000)         0.282
ary2(50000)        0.147
ary3(2000)         1.557
fibo(30)           5.309
hash1(50000)       0.362
hash2(500)         0.348
heapsort(20000)    1.564
matrix(20)         0.857
nestedloop(12)     0.796
sieve(30)          0.737
strcat(200000)     0.079
------------------------
Total             24.813

執行 /usr/local/php-7.2.33/bin/php bench.php ,測試結果如下

simple             0.089
simplecall         0.037
simpleucall        0.156
simpleudcall       0.169
mandel             0.483
mandel2            0.566
ackermann(7)       0.148
ary(50000)         0.186
ary2(50000)        0.020
ary3(2000)         0.237
fibo(30)           0.519
hash1(50000)       0.062
hash2(500)         0.048
heapsort(20000)    0.120
matrix(20)         0.121
nestedloop(12)     0.265
sieve(30)          0.129
strcat(200000)     0.035
------------------------
Total              3.388

執行 /usr/local/php-7.4.0/bin/php bench.php ,測試結果如下

simple             0.059
simplecall         0.016
simpleucall        0.033
simpleudcall       0.052
mandel             0.144
mandel2            0.135
ackermann(7)       0.042
ary(50000)         0.169
ary2(50000)        0.007
ary3(2000)         0.060
fibo(30)           0.126
hash1(50000)       0.031
hash2(500)         0.028
heapsort(20000)    0.080
matrix(20)         0.049
nestedloop(12)     0.075
sieve(30)          0.030
strcat(200000)     0.014
------------------------
Total              1.151

透過對比發現 PHP 7 效能提升明顯,PHP 5 需要大概 25 秒執行完成測試程式碼,而 PHP 7 均不超過 4 秒,另外 PHP 7.4 比 PHP 7.2 效能又有不少的提升。當然不一樣的測試環境測試結果會不一樣,但是效能提升肯定是一致的。

另外 Zend 目錄還有一個更復雜的測試檔案 micro_bench.php , 有興趣的夥伴可以自行去測試。如果 PHP 8 穩定版正式釋出之後,小夥伴們也可以去親身感受一下 PHP 8 的效能如何。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章