XE (1.8.19) vs. Rhymix (develop branch)
테스트 환경:
- Conoha.jp 클라우드서버 (8코어, 16GB RAM)
- Ubuntu 14.04 LTS 64비트
- PHP 5.5.9 (FPM, pm.max_children = 20)
- PHP 7.0.6 (FPM, pm.max_children = 20)
- MariaDB 10.1.13
- nginx 1.9.14
- DB 연결 방식: mysqli_innodb
- Zend Opcache 사용
테스트 방법:
- 설치 직후 메인화면 (XEDITION 레이아웃, 기본 위젯페이지) 로딩 속도를 측정
- 별도의 캐시 설정 없이 기본 적용되는 파일캐시만 사용
- 동시요청 8일 때와 16일 때를 모두 측정
- ab -n 4000 -c <동접수> -k -l http://localhost/
- 각각 10회 측정하여 가장 빠른 5회의 평균을 계산
테스트 결과:
1. PHP 5.5.9 (동시요청 8)
- XE: 330.6 req/s
- Rhymix: 318.4 req/s
2. PHP 5.5.9 (동시요청 16)
- XE: 378.6 req/s
- Rhymix: 363.6 req/s
3. PHP 7.0.6 (동시요청 8)
- XE: 591.4 req/s
- Rhymix: 653.2 req/s
4. PHP 7.0.6 (동시요청 16)
- XE: 697.4 req/s
- Rhymix: 780.2 req/s
결론:
PHP 5.5에서는 XE가 4% 정도 더 빠릅니다. 라이믹스에 새로 추가된 기능이 많고, XE 클래스 그대로 사용할 수 있도록 하기 위한 호환 레이어도 있기 때문에 좀더 무거운 거겠죠.
PHP 7.0에서는 라이믹스가 10% 정도 더 빠릅니다. 낡은 코드를 들어내고 오류를 많이 잡아서 최신 버전에 최적화한 덕분인 듯 합니다. (라이믹스 개발팀 대부분이 평소 PHP 7에서 작업합니다.)
Xdebug profiler를 돌려보면 어느 함수가 얼마나 많은 시간을 잡아먹는지 정확하게 측정할 수 있는데, 간단한 페이지에서는 트리거 처리와 템플릿 처리가 실행시간의 대부분을 차지합니다. 이 부분을 집중적으로 개선하여 PHP 5.5에서도 XE와 같거나 더 빠르게 동작할 수 있도록 해보겠습니다 ^^