Đo hiệu năng giữa các PHP Framework phổ biến (phần 1)
Bài đăng này đã không được cập nhật trong 3 năm
Hello everyone! Trong bài viết này mình sẽ tiến hành đo tốc độ của 1 số Framework PHP nổi tiếng hiện nay. Bao gồm: anh em Laravel - Lumen, chị em Symfony - Silex và bác Codeigniter. Dự tính phần này mình sẽ đo tốc độ xử lý (không truy xuất DB) của các framework. Còn đo có truy xuất DB mình sẽ viết trong bài tới OK bắt đầu nào
I. Setup
1. Init code
Laravel:
composer create-project --prefer-dist laravel/laravel laravel
Lumen:
composer create-project --prefer-dist laravel/lumen lumen
Symfony:
sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony
sudo chmod a+x /usr/local/bin/symfony
symfony new symfony
Silex:
composer create-project fabpot/silex-skeleton silex "~2.0"
Codeigniter:
https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.zip
Với mỗi project mình đều tạo 1 view và trả về dòng chữ Hello framework
. Lát chúng ta sẽ request tới đó.
2. Config docker
- Mình sử dụng laradock để dựng môi trường docker.
- Các thiết lập setup các bạn có thể tham khảo tại đây: https://github.com/tranduykhanh/php-fw-benchmark
$ docker-compose up -d
- Ok vậy là ứng dụng của chúng ta đã sắn sàng với các địa chỉ sau
- Laravel: http://localhost:81
- Symfony: http://localhost:82
- Lumen: http://localhost:83
- Silex: http://localhost:84
- Codeigniter: http://localhost:85
3. Benchmark tool
- Mình sử dụng công cụ apache bench phổ biến để đo hiệu năng
- Cú pháp mình sử dụng
ab -c 10 -n 1000 http://localhost:xx
// -c: Số lượng concurrent
// -n: Số lượng requests
- Ok. Tiến hành benchmark speed nào :slight_smile:
II. Benchmark (không truy xuất DB)
1. Laravel
2. Symfony
3. Lumen
4. Silex
5. Codeigniter
III. Tổng hợp kết quả
Mình có tổng hợp tại bảng sau. Kết quả đều đã được làm tròn.
Laravel | Symfony | Lumen | Silex | Codeigniter | |
---|---|---|---|---|---|
Requests per second r/s (more is better) | 64 | 56 | 135 | 126 | 351 |
Time per request s/r (less is better) | 155 | 177 | 73 | 79 | 28 |
Total time s (less is better) | 15 | 17 | 7 | 8 | 3 |
Đúng như dự đoán. Framework nào càng ít chức năng, gần với "thuần" thì đem lại tốc độ càng cao. Các con số benchmark chỉ mang tính chất tham khảo. Trong thực tế để lựa chọn Framework chúng ta cần căn cứ vào một số yếu tố khác của dự án như chức năng, thời gian, hiệu năng nữa. Mong rằng bài viết sẽ đem lại một chút thông tin để giúp bạn lựa chọn Framework phù hợp hơn cho dự án của mình.
- Source code: https://github.com/tranduykhanh/php-fw-benchmark
All rights reserved