Đo hiệu năng giữa các PHP Framework phổ biến (phần 1)

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

$ docker-compose up -d 

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. 😄