권장(무료): PHP7
PHP7은 처음 출시되었을 때 이전 버전보다 몇 배 더 빠르다고 주장되었습니다. PHP7에서 실행되는 다양한 오픈 소스 프레임워크 또는 시스템은 몇 배 더 빠르고 더 빠릅니다. 어쨌든, 무슨 일이 있어도 미디어와 개발자 모두 불길을 부채질하고 있는 것이지, 아니 칭찬해야 할 것입니다.
아무 말 없이 조용히 멋있게 행동하는 모습만 지켜볼게요.
일반적으로 나는 함정에 빠지고 싶지 않기 때문에 휴대폰 시스템을 마지막으로 업그레이드하는 사람입니다. 결국 iOS 및 Android와 같은 시스템에는 세계에서 가장 많이 해킹된 언어는 말할 것도 없고 버그가 있을 것입니다. .
오늘 PHP7이 전설처럼 멋진지 확인할 시간이 왔습니다.
두 가지 PHP 버전 설치
http://php.net/ 이미 최신 버전의 PHP7이 있으므로 직접 다운로드할 수 있습니다.
PHP5와 PHP7(PHP6는 폐기되었으며 고민스러운 1s)의 성능을 테스트하기 위해 서로 다른 디렉토리에 두 개의 PHP 버전을 설치했습니다.
설치 과정은 생략됩니다. 소스코드 설치나 패키지 관리 도구 설치와 상관없이 본인의 경로만 기억하시면 됩니다.
PHP7:
# /usr/local/php7/bin/php -vPHP 7.1.5 (cli) (built: May 13 2017 23:36:41) ( NTS )Copyright (c) 1997-2017 The PHP GroupZend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
PHP5:
# /usr/bin/php -vPHP 5.6.30 (cli) (built: Jan 19 2017 22:31:39)Copyright (c) 1997-2016 The PHP GroupZend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
환경 설명: 최상의 테스트 결과를 보장하기 위해 이 테스트는 실제 상황에 더 가까운 프로덕션 환경에서 직접 수행되었습니다. T 운영체제: CENTOS 7.2 64비트
기본 구성: 1GB 1GB 1MBPS
SOFO 브랜드: Tencent Cloud
Php7과 PHP5 대결
1 :$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);}}}
time /usr/bin/php test.php real 0m0.301suser 0m0.239ssys 0m0.050s--------------------------time /usr/bin/php test.phpreal 0m0.310suser 0m0.241ssys 0m0.054s--------------------------time /usr/bin/php test.phpreal 0m0.289suser 0m0.238ssys 0m0.050s
볼 수 있습니다. 순수 PHP 스크립트 테스트 데이터를 보면 PHP7의 성능이 3~4배 향상되었음을 알 수 있습니다. vim test.php
2.php 데이터베이스 작동 테스트
먼저 사용자 테이블을 생성합니다:time /usr/local/php7/bin/php test.phpreal 0m0.087suser 0m0.063ssys 0m0.024s-------------------------------------time /usr/local/php7/bin/php test.phpreal 0m0.106suser 0m0.073ssys 0m0.033s--------------------------------------time /usr/local/php7/bin/php test.phpreal 0m0.083suser 0m0.061ssys 0m0.022s
Table: test_userCreate 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=utf8
insert into test_user (uid,name) values (1,"dada");MariaDB [test]> select * from test_user;+-----+------+| uid | name |+-----+------+| 1 | dada |+-----+------+
/usr/bin/php -m|grep pdopdo_mysqlpdo_sqlite/usr/local/php7/bin/php -m|grep pdopdo_mysqlpdo_sqlite
$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'];}}
time /usr/bin/php test_db.phpreal 0m48.396suser 0m11.149ssys 0m3.998sreal 0m51.447suser 0m11.800ssys 0m4.395sreal 0m51.517suser 0m11.733ssys 0m4.439s
3.PHP 프레임워크 테스트
thinkphp
(1) 프레임워크 진입 테스트
real 0m47.900suser 0m9.875ssys 0m4.130sreal 0m46.977suser 0m9.760ssys 0m3.983sreal 0m50.010suser 0m10.268ssys 0m4.307s
time /usr/bin/php ./public/index.phpreal 0m0.036suser 0m0.026ssys 0m0.010sreal 0m0.038suser 0m0.026ssys 0m0.012sreal 0m0.041suser 0m0.032ssys 0m0.009s
프레임워크 입구에서 첫 번째 단계의 로직 재사용:
time /usr/local/php7/bin/php ./public/index.phpreal 0m0.027suser 0m0.021ssys 0m0.005sreal 0m0.027suser 0m0.018ssys 0m0.009sreal 0m0.025suser 0m0.023ssys 0m0.002s
<?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);}}}}}
PHP7 버전:
time /usr/bin/php ./public/index.phpreal 0m0.538suser 0m0.463ssys 0m0.072sreal 0m0.454suser 0m0.386ssys 0m0.065sreal 0m0.387suser 0m0.331ssys 0m0.055s
laravel
(1) 프레임워크 진입 테스트
time /usr/local/php7/bin/php ./public/index.phpreal 0m0.150suser 0m0.123ssys 0m0.024sreal 0m0.137suser 0m0.105ssys 0m0.031sreal 0m0.123suser 0m0.096ssys 0m0.026s
time /usr/bin/php ./public/index.phpreal 0m0.104suser 0m0.081ssys 0m0.022sreal 0m0.148suser 0m0.122ssys 0m0.025sreal 0m0.122suser 0m0.100ssys 0m0.021s
laravel의 프레임워크 진입 테스트를 보면 PHP5와 PHP7 사이에 성능 차이가 별로 없는 것을 볼 수 있는데, PHP5임에도 불구하고 가장 빠른 0.081초는 가장 느린 PHP7 버전인 0.067초보다 느립니다. 따라서 PHP7이 여전히 더 좋습니다.
thinkphp처럼 약간의 로직을 추가하고 테스트 로직을 재사용해 보세요.
먼저 laravel 라우팅을 수정하고 UserController의 인덱스 메서드를 직접 호출합니다.time /usr/local/php7/bin/php ./public/index.phpreal 0m0.079suser 0m0.064ssys 0m0.015sreal 0m0.081suser 0m0.067ssys 0m0.014sreal 0m0.067suser 0m0.054ssys 0m0.013s
Route::get('/', 'UserController@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);}}}}
time /usr/bin/php ./public/index.phpreal 0m0.510suser 0m0.377ssys 0m0.079sreal 0m0.627suser 0m0.447ssys 0m0.091sreal 0m0.519suser 0m0.436ssys 0m0.079s
스트레스 테스트
요청 1000회, 동시성 50회
PHP5 버전:
3가지 샘플은 다음과 같습니다.
PHP7 버전:
스트레스 테스트를 통해 PHP7 버전에서는 평균 단일 요청 시간, 요청 완료 시간, 각 연결 요청의 실제 실행 시간이 더 적게 걸리는 것을 확인할 수 있으며, 가장 중요한 성능 지표인 QPS도 PHP5 버전보다 높습니다.
PHP7의 Opcache 성능 테스트
opcache 활성화:
젠장! opcache를 켠 PHP7은 실제로 켜지지 않은 PHP7과 비교했을 때 성능이 10배 이상 향상되었고, PHP5와 비교하면 거의 20배 가까이 향상되었습니다! 두려운지 물어보세요!
PHP 스크립트 테스트 데이터는 다음과 같습니다.
PHP7 vs PHP5
PHP7 성능은 PHP5의 약 3~4배입니다.
스트레스 테스트 데이터는 다음과 같습니다.
PHP5 vs PHP7 vs PHP7+OPCACHE
결론:
이 글에서는 PHP7과 PHP5를 간단히 비교했는데, 실제로 성능이 3~3씩 향상되었습니다. 순수 PHP에서 4배 스크립트에서든 프레임워크에서든 PHP7의 고성능 성능은 일관됩니다.
PHP7은 매우 빠릅니다. PHP7+OpCache는 매우 빠릅니다. PHP7은 정말 대단합니다. PHP의 새로운 시대가 도래했습니다. 서둘러 사용하세요!
위 내용은 php7과 php5의 비교 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!