Skip to main content

Benchmark

Được xây dựng trên Swoole với kiến trúc persistent process, Vietiso xử lý hàng chục nghìn request mỗi giây — không bị giới hạn bởi chi phí khởi động PHP-FPM truyền thống.


Môi trường kiểm thử

Thông sốGiá trị
CPUAMD EPYC 7713 (16 cores)
RAM32 GB DDR4
OSUbuntu 22.04 LTS
Network10 Gbps (loopback)
Toolwrk2 + wrk
Connections256 concurrent
Duration60 giây / lần chạy
Warmup30 giây
Workers16 (= số core)

Phiên bản framework:

FrameworkPhiên bản
VietisoPHP 8.3 + Swoole 5.1
Laravel11.x / PHP 8.3 + PHP-FPM
Symfony7.x / PHP 8.3 + PHP-FPM
Fastifyv4.x / Node.js 22 LTS
Expressv4.x / Node.js 22 LTS

Kịch bản 1 — Hello World

Phản hồi văn bản đơn giản, không có I/O.

FrameworkNgôn ngữReq/s ↑P50 LatencyP95 LatencyP99 LatencyMemory/worker
VietisoPHP + Swoole78,5400.8 ms1.9 ms3.2 ms32 MB
FastifyNode.js71,3500.9 ms2.1 ms3.4 ms68 MB
ExpressNode.js34,2001.8 ms4.6 ms7.2 ms75 MB
SymfonyPHP (FPM)2,84022 ms58 ms95 ms12 MB
LaravelPHP (FPM)1,19048 ms120 ms195 ms18 MB

Kịch bản 2 — JSON API

Trả về JSON object với serialization.

FrameworkNgôn ngữReq/s ↑P50 LatencyP95 LatencyP99 LatencyMemory/worker
VietisoPHP + Swoole67,8200.9 ms2.3 ms3.8 ms34 MB
FastifyNode.js62,1001.1 ms2.5 ms4.0 ms70 MB
ExpressNode.js28,7002.2 ms5.8 ms9.1 ms78 MB
SymfonyPHP (FPM)2,41026 ms68 ms112 ms14 MB
LaravelPHP (FPM)98058 ms145 ms235 ms22 MB

Kịch bản 3 — Database Query

Truy vấn 1 bản ghi từ PostgreSQL rồi trả JSON. Vietiso tận dụng connection pooling của Swoole nên không mất thời gian kết nối lại mỗi request.

FrameworkNgôn ngữReq/s ↑P50 LatencyP95 LatencyP99 LatencyMemory/worker
VietisoPHP + Swoole22,8003.1 ms7.4 ms12.0 ms38 MB
FastifyNode.js18,5003.8 ms9.2 ms15.5 ms82 MB
ExpressNode.js11,2006.2 ms14.8 ms24.0 ms89 MB
SymfonyPHP (FPM)1,65038 ms92 ms148 ms16 MB
LaravelPHP (FPM)68085 ms210 ms340 ms26 MB

Tại sao Vietiso nhanh?

⚡ Persistent Process

Khác với PHP-FPM, Swoole giữ tiến trình sống xuyên suốt. Không còn overhead khởi động framework, load class, parse config ở mỗi request.

🔗 Connection Pooling

Kết nối tới database, Redis, RabbitMQ được tái sử dụng giữa các request — giảm đáng kể latency và overhead kết nối.

🔄 Coroutines

I/O bất đồng bộ với coroutine built-in. Một worker có thể xử lý nhiều request song song mà không cần tạo thêm thread.

📦 Async I/O

File I/O, DNS lookup, network đều non-blocking. Worker không bao giờ bị block chờ I/O hoàn thành.

🪄 Zero-Reflection Proxy

Thay vì dùng PHP Reflection API ở mỗi request để phân tích class, constructor, dependency — Vietiso sinh code proxy tại compile time. Proxy được cache lại và gọi trực tiếp như code thường, không có overhead reflection runtime.


Tóm tắt

So sánhKết quả
Nhanh hơn Fastify (Hello World)+10% req/s
Nhanh hơn Fastify (JSON API)+9% req/s
Nhanh hơn Fastify (DB Query)+23% req/s
Nhanh hơn Laravel (DB Query)~34x
Nhanh hơn Symfony (DB Query)~14x
Latency P99 (Hello World)3.2 ms
Memory per worker (Hello World)32 MB