>  기사  >  백엔드 개발  >  PHP 프레임워크 성능 테스트 report_php 기술

PHP 프레임워크 성능 테스트 report_php 기술

WBOY
WBOY원래의
2016-05-16 09:00:181912검색

PHP 개발자이자 스타트업 팀의 기술 개발자로서 개발 프레임워크를 선택하는 것은 매우 어려운 일입니다.

ThinkPHP를 사용하면 교육 기관을 막 졸업한 개발자를 채용하여 시작할 수 있지만 성능과 포스트 코드를 분리하는 것은 골치 아픈 일입니다. 그러나 많은 전문가들이 이미 길을 닦았으므로 많은 타사 기능을 직접 작성할 필요는 없습니다.

Laravel을 사용하면 Legend가 작성하기 매우 편하고 확장성이 충분하지만 학습 비용이 다소 높기 때문에 후배 개발자에게 프레임워크를 익히는 데 반달을 줄 수는 없습니다. 게다가 업계 관계자들은 라라벨의 성능이 그다지 좋지 않고, 문서가 특별히 풍부하지도 않다고 폭로했다고 한다.

Yii의 경우 구문이 좀 번거롭고, 프론트엔드와 백엔드 코드 분리도 조금 번거롭지만, 성능이 아주 좋고, 이미 국내 대기업에서 많이 사용하고 있는 것 같습니다. 예상치 못한 일이 발생하면 신속하게 전문가를 찾아 질문에 답할 수 있습니다.

간단한 성능 평가를 하는 것이 좋습니다. 성능이 뛰어난 것을 선택하면 틀릴 수 없습니다.

성능 테스트
테스트 시간: 2016년 5월 6일
테스트 도구: siege(MAC 시스템의 ab에는 항상 pr_socket_recv: Connection Reset by Peer(54) 오류가 있으므로 siege를 선택했습니다.)
테스트 머신: MacPro Core i5 프로세서/8GB 메모리/256GB SSD 플래시 메모리
테스트 환경: Apache PHP5.6
프레임워크 버전: ThinkPHP 3.2.3 Laravel 5.2 Yii2.0.5
테스트 원칙: 각 테스트 주기는 5회이며 중간 데이터를 가져옵니다
추가 참고 사항: 모든 프로젝트는 하위 디렉토리

에 배치됩니다.

결과 설명

Transactions:        2119 hits 处理请求总数量
Availability:        96.85 % 可用性
Elapsed time:        9.74 secs 运行时间
Data transferred:      1.31 MB 数据传输量
Response time:        0.60 secs 响应时间
Transaction rate:     217.56 trans/sec 每秒处理效率
Throughput:        0.13 MB/sec 每秒处理数据
Concurrency:       130.28 并发
Successful transactions:    2162 成功的请求
Failed transactions:       69 失败的请求
Longest transaction:      2.85 最长的单个请求
Shortest transaction:      0.01 最短的单个请求

테스트 시작

컨트롤러를 추가하고 컨트롤러에서 HelloWorld를 10,000번 입력

동시성 50회 반복 10회:

가장 먼저 우리를 찾아온 것은 ThinkPHP였는데 괜찮아 보였습니다

Transactions:         500 hits
Availability:       100.00 %
Elapsed time:        2.81 secs
Data transferred:      52.45 MB
Response time:        0.26 secs
Transaction rate:     177.94 trans/sec
Throughput:        18.67 MB/sec
Concurrency:        47.10
Successful transactions:     500
Failed transactions:        0
Longest transaction:      0.48
Shortest transaction:      0.03

그럼 라라블은 뭐 좀 실망이네요

Transactions:         500 hits
Availability:       100.00 %
Elapsed time:        13.33 secs
Data transferred:      52.45 MB
Response time:        1.27 secs
Transaction rate:      37.51 trans/sec
Throughput:        3.93 MB/sec
Concurrency:        47.55
Successful transactions:     500
Failed transactions:        0
Longest transaction:      3.64
Shortest transaction:      0.07

결승전을 앞두고 비교적 긍정적이었던 이이이

Transactions:         500 hits
Availability:       100.00 %
Elapsed time:        4.84 secs
Data transferred:      52.45 MB
Response time:        0.46 secs
Transaction rate:     103.31 trans/sec
Throughput:        10.84 MB/sec
Concurrency:        47.65
Successful transactions:     500
Failed transactions:        0
Longest transaction:      0.88
Shortest transaction:      0.04

동시성 200 루프 10회:

첫 번째는 ThinkPHP입니다

Transactions:        1977 hits
Availability:        98.85 %
Elapsed time:        10.03 secs
Data transferred:     207.40 MB
Response time:        0.95 secs
Transaction rate:     197.11 trans/sec
Throughput:        20.68 MB/sec
Concurrency:       187.68
Successful transactions:    1977
Failed transactions:       23
Longest transaction:      1.22
Shortest transaction:      0.02

그럼 라라벨

Transactions:        1890 hits
Availability:        94.50 %
Elapsed time:        51.85 secs
Data transferred:     198.27 MB
Response time:        4.88 secs
Transaction rate:      36.45 trans/sec
Throughput:        3.82 MB/sec
Concurrency:       178.00
Successful transactions:    1890
Failed transactions:       110
Longest transaction:      26.01
Shortest transaction:      0.07

드디어 이이

Transactions:        1996 hits
Availability:        99.80 %
Elapsed time:        18.95 secs
Data transferred:     209.39 MB
Response time:        1.79 secs
Transaction rate:     105.33 trans/sec
Throughput:        11.05 MB/sec
Concurrency:       188.57
Successful transactions:    1996
Failed transactions:        4
Longest transaction:      3.29
Shortest transaction:      0.10

의외로 최적화가 없으면 ThinkPHP가 가장 빨랐고 Yii는 약간 더 빨랐으며 Laravel은 불안정한 속도로 테스트를 마쳤습니다. 결과는 다소 예상치 못한 결과이지만 위 테스트는 개발 환경만을 나타냅니다. 아래에서는 프레임워크를 최적화하여 온라인 환경을 시뮬레이션합니다.

최적화 프레임워크

ThinkPHP:

APP_DEBUG改为false


라라벨:

APP_DEBUG改为false
php artisan route:cache
php artisan optimize
php artisan config:cache
composer dumpautoload -o

이:

YII_DEBUG가 false로 변경되었습니다
작곡가 dumpautoload -o
동시성 200 루프 10회:

ThinkPHP

Transactions:        1655 hits
Availability:        82.75 %
Elapsed time:        8.21 secs
Data transferred:     173.62 MB
Response time:        0.69 secs
Transaction rate:     201.58 trans/sec
Throughput:        21.15 MB/sec
Concurrency:       139.29
Successful transactions:    1655
Failed transactions:       345
Longest transaction:      7.83
Shortest transaction:      0.00

라라벨:

Transactions:        1520 hits
Availability:        76.00 %
Elapsed time:        34.95 secs
Data transferred:     159.45 MB
Response time:        3.15 secs
Transaction rate:      43.49 trans/sec
Throughput:        4.56 MB/sec
Concurrency:       136.84
Successful transactions:    1520
Failed transactions:       480
Longest transaction:      19.18
Shortest transaction:      0.00

이:

Transactions:        1704 hits
Availability:        85.20 %
Elapsed time:        15.16 secs
Data transferred:     178.76 MB
Response time:        1.46 secs
Transaction rate:     112.40 trans/sec
Throughput:        11.79 MB/sec
Concurrency:       164.21
Successful transactions:    1704
Failed transactions:       296
Longest transaction:      9.04
Shortest transaction:      0.00

이상한 점은 프레임워크가 디버깅 모드를 끄면 실패가 더 많다는 것입니다. 그러나 간단한 최적화 이후 Laravel의 성능이 크게 향상되었음은 분명하지만, 여전히 다른 두 프레임워크에 비하면 낮은 수준입니다.

결론

시험을 치르는 동안 저는 우울함을 느꼈고, 제 세계관이 무너질 정도로 무너졌다는 느낌을 받았습니다.

ThinkPHP의 성능은 Yii보다 2배, Laravel보다 거의 4배 높습니다
Yii의 성능은 상대적으로 평범하지만 테스트에서는 다른 두 프레임워크보다 요청 실패가 적은 것이 분명합니다
Laravel은 여전히 ​​우아하지만 성능이 걱정됩니다. 네티즌의 말로 설명하는 것이 좋습니다. 배우는 사람은 살고, 사용하는 사람은 죽습니다

드디어

제 프로젝트는 자체 구축 프레임워크를 사용하여 개발하게 되었습니다. Composer의 힘으로 개발 과정이 매우 순조롭게 진행되었습니다. 마지막으로 200개의 동시 주기를 10번 실행하는 자체 구축 프레임워크의 데이터를 첨부했습니다. 프레임워크는 오픈 소스이지만 업데이트가 매우 복잡합니다. github에서 PPPHP를 검색하고 나와 함께 프레임워크를 구축해 보세요.

Transactions:        1672 hits
Availability:        83.60 %
Elapsed time:        6.18 secs
Data transferred:     175.40 MB
Response time:        0.57 secs
Transaction rate:     270.55 trans/sec
Throughput:        28.38 MB/sec
Concurrency:       153.16
Successful transactions:    1672
Failed transactions:       328
Longest transaction:      4.57
Shortest transaction:      0.01

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.