เปรียบเทียบความเร็วของ PHP Frameworks ยอดนิยม
การเลือก PHP Framework ไม่ควรดูแค่ความนิยม แต่ต้องดู "ต้นทุนต่อ request" ที่ Framework นั้นเพิ่มเข้ามาด้วย เพราะมันคือสิ่งที่ผู้ใช้สัมผัสได้โดยตรงทั้งความเร็วในการตอบสนอง จำนวนผู้ใช้พร้อมกันที่รองรับได้ และค่าใช้จ่ายของเซิร์ฟเวอร์ที่ต้องจ่าย
บทความนี้สรุปผล benchmark ล่าสุดของ Kotchasan 7.0 เทียบกับ Slim, Symfony, CodeIgniter และ Laravel โดยวัดจริงด้วย HTTP load generator บน Docker ที่ควบคุมสภาพแวดล้อมให้เหมือนกันทุก Framework และเปิดโค้ดทั้งหมดให้ทำซ้ำได้ 100%
สรุปในหนึ่งนาที
Kotchasan เร็วที่สุดในบรรดา Framework
ในทุกสถานการณ์ทดสอบ Kotchasan เป็นอันดับ 1 ของ Framework และเข้าใกล้ความเร็วของ PHP เปล่าที่ไม่มี Framework มากที่สุด
Requests / second (/plaintext)
ยิ่งมากยิ่งดี · median จาก 5 runs × 10 วินาที · 128 connections
PHP เปล่า = baseline ไม่มี Framework · ผลดิบและกราฟแบบโต้ตอบดูได้ที่ kotchasan-benchmark
ผลรายสถานการณ์ Kotchasan นำทุกด้าน
การทดสอบใช้สถานการณ์ตามแนวทาง TechEmpower 5 แบบ ไล่จากงานที่วัด overhead ของ Framework ล้วน ๆ ไปจนถึงงานที่ต้องคุยกับฐานข้อมูลและ render template ตัวเลขคือ requests/วินาที (median) และเปอร์เซ็นต์คือสัดส่วนเทียบกับ PHP เปล่าในสถานการณ์เดียวกัน
| Framework | /plaintext | /json | /db | /queries?n=20 | /fortunes |
|---|---|---|---|---|---|
| PHP เปล่า (baseline) | 22,194 100% | 22,296 100% | 11,832 100% | 2,926 100% | 10,741 100% |
| Kotchasan 7.0 | 18,621 83.9% | 18,468 82.8% | 10,101 85.4% | 2,961 101.2% | 9,356 87.1% |
| Slim 4.15 | 13,131 59.2% | 13,144 59.0% | 7,991 67.5% | 2,696 92.1% | 7,536 70.2% |
| Symfony 8.1 | 6,314 28.5% | 6,256 28.1% | 4,779 40.4% | 2,167 74.1% | 4,523 42.1% |
| CodeIgniter 4.7 | 3,230 14.6% | 3,261 14.6% | 2,743 23.2% | 1,597 54.6% | 2,684 25.0% |
| Laravel 13.30 | 2,888 13.0% | 2,896 13.0% | 2,464 20.8% | 1,467 50.1% | 2,363 22.0% |
- /plaintext และ /json วัด overhead ของ Framework แท้ ๆ Kotchasan เสียความเร็วไปเพียง 16% จาก PHP เปล่า ขณะที่ Laravel และ CodeIgniter เหลือความเร็วไม่ถึง 15%
- /db และ /fortunes เมื่อมีงานฐานข้อมูลและ template เข้ามา Kotchasan ยังคงรักษาระดับ 85–87% ของ PHP เปล่า และเร็วกว่า Laravel ถึง 4 เท่า
- /queries?n=20 เป็นสถานการณ์ที่ผูกกับ MySQL หนักที่สุด Kotchasan ทำได้ 101% ของ PHP เปล่า หมายความว่า overhead ของ Framework ต่ำจนวัดไม่เจอในเชิงสถิติ
ทำไม Kotchasan ถึงเร็ว น้ำหนักต่อ request
คำตอบไม่ได้อยู่ที่เทคนิคพิเศษ แต่อยู่ที่การออกแบบให้ "เบา" ตั้งแต่ต้น ทุก request ของ Kotchasan โหลดโค้ดเท่าที่จำเป็นจริง ๆ ไม่มี service container ขนาดใหญ่ ไม่มี middleware stack ยาว ๆ และไม่มี dependency ภายนอกที่ต้อง bootstrap ทุกครั้ง ผลคือจำนวนไฟล์และหน่วยความจำต่อ request ต่ำใกล้เคียง PHP เปล่า
จำนวนไฟล์ที่โหลดต่อ request
ยิ่งน้อยยิ่งดี · วัดจาก endpoint /info
Peak memory ต่อ request
ยิ่งน้อยยิ่งดี · วัดจาก endpoint /info
Kotchasan ใช้หน่วยความจำมากกว่า PHP เปล่าเพียง 10 KB และมีขนาดโค้ดทั้ง Framework เพียง 1.6 MB เทียบกับ Symfony 8.9 MB และ Laravel 30.5 MB นี่คือเหตุผลหลักของช่องว่าง RPS ที่เห็นในตารางด้านบน และยังหมายถึงโค้ดที่อ่านง่าย ตรวจสอบได้ทั้งหมด และ deploy ได้บน shared hosting ทั่วไปโดยไม่ต้องพึ่ง Composer
Latency ตอบสนองเร็วเท่า PHP เปล่า
ความเร็วสูงสุดต่อวินาทีเป็นเพียงด้านเดียว อีกด้านคือผู้ใช้แต่ละคนต้องรอนานแค่ไหน ค่า p50 คือเวลาที่ครึ่งหนึ่งของ request ได้รับคำตอบ และ p99 คือเวลาที่ 99% ของ request ได้รับคำตอบ (หน่วยมิลลิวินาที ยิ่งน้อยยิ่งดี)
| Framework | /plaintext | /db | /fortunes | |||
|---|---|---|---|---|---|---|
| p50 | p99 | p50 | p99 | p50 | p99 | |
| PHP เปล่า | 0 ms | 1 ms | 1 ms | 2 ms | 1 ms | 2 ms |
| Kotchasan 7.0 | 0 ms | 1 ms | 1 ms | 3 ms | 1 ms | 3 ms |
| Slim 4.15 | 1 ms | 2 ms | 1 ms | 4 ms | 1 ms | 4 ms |
| Symfony 8.1 | 2 ms | 5 ms | 3 ms | 6 ms | 3 ms | 7 ms |
| CodeIgniter 4.7 | 4 ms | 10 ms | 5 ms | 11 ms | 5 ms | 11 ms |
| Laravel 13.30 | 5 ms | 11 ms | 6 ms | 13 ms | 6 ms | 13 ms |
Kotchasan ให้ค่า p50 เท่ากับ PHP เปล่าในทุกสถานการณ์ และแม้แต่ request ที่ช้าที่สุด 1% (p99) ก็ยังตอบภายใน 1–3 ms ขณะที่ Laravel และ CodeIgniter ใช้เวลา 10–13 ms ภายใต้โหลดเดียวกัน ความต่างระดับ 10 เท่านี้คือสิ่งที่ผู้ใช้รู้สึกได้เมื่อเว็บมีคนเข้าพร้อมกันจำนวนมาก
ทดสอบอย่างเป็นธรรม ทำซ้ำได้ 100%
ตัวเลข benchmark จะมีความหมายก็ต่อเมื่อทุก Framework ถูกวัดภายใต้เงื่อนไขเดียวกันและมีคนอื่นทำซ้ำได้ ชุดทดสอบนี้จึงออกแบบให้ตรวจสอบได้ทุกขั้นตอน
- สภาพแวดล้อมเดียวกันเป๊ะ ทุกแอปรันบน Docker image
php:8.4-fpm-bookwormเดียวกัน php.ini เดียวกัน (opcache เปิด, JIT ปิด) php-fpm 16 workers เท่ากัน nginx และ MySQL 8.4 ตัวเดียวกัน - Production config ทุกตัว Laravel, Symfony และ CodeIgniter รันโหมด production พร้อม cache config/route/view ตามวิธี deploy จริง และปิด debug ทั้งหมด ไม่มีการทำให้คู่แข่งช้าลง
- Raw PDO + SQL เดียวกันทุกแอป ตัดตัวแปร ORM ออก ตัวเลขจึงสะท้อน overhead ของ request pipeline ของ Framework เท่านั้น
- Verify ก่อนวัดเสมอ ทั้ง 30 endpoint (6 แอป × 5 สถานการณ์) ต้องผ่านการตรวจ status, content-type, รูปร่างข้อมูล และ HTML ของ /fortunes ต้อง byte-identical ข้ามทุก Framework จึงจะเริ่มวัดได้
- Interleave + warmup + median วนสลับ run → scenario → app เพื่อให้สภาพเครื่องกระทบทุกตัวเท่ากัน อุ่น opcache และ MySQL ก่อนเก็บตัวเลข แล้วรายงานค่า median จาก 5 runs
- Pin ทุกเวอร์ชัน Framework อื่นล็อกด้วย composer.lock ส่วน Kotchasan ใช้สำเนาโค้ดที่ระบุ git commit ไว้ชัดเจน ผลจึงทำซ้ำได้แม้ต้นทางจะเปลี่ยนไปในอนาคต
เมื่อรันชุดทดสอบเดียวกันซ้ำสองครั้ง ความต่างของ median ส่วนใหญ่อยู่ที่ 1–8% และอันดับของ Framework เหมือนกันทุกคู่ในทุกสถานการณ์ ผลจึงไม่ใช่เรื่องบังเอิญของรันใดรันหนึ่ง
สภาพแวดล้อมที่ใช้ทดสอบ
- เครื่อง AMD Ryzen 5 7535HS (12 threads), RAM 62 GB, Linux kernel 6.8
- Stack PHP 8.4 (php-fpm) + nginx 1.29 + MySQL 8.4 บน Docker
- Load generator autocannon 8.0 · 5 runs × 10 วินาที · 128 connections ต่อ app×scenario
- เวอร์ชัน Kotchasan 7.0.0 · Slim 4.15.3 · Symfony 8.1.6 · CodeIgniter 4.7.4 · Laravel 13.30.1
- รันเมื่อ 2 กันยายน 2569
ทำซ้ำด้วยตัวคุณเอง
โค้ดทั้งหมดของชุดทดสอบ ตั้งแต่ Dockerfile, สคริปต์วัด, ไปจนถึงผลดิบทุกรัน เปิดให้ตรวจสอบและรันซ้ำได้จาก GitHub เพียงมี Docker และ Node.js
- โปรเจ็ค kotchasan-benchmark โค้ดชุดทดสอบ แอปของทุก Framework และผลดิบ (results/raw/)
- หน้ารายงานแบบโต้ตอบ goragodwiriya.github.io/kotchasan-benchmark เลือกและเปรียบเทียบผลรันได้
- โค้ด Kotchasan github.com/goragodwiriya/kotchasan
คำสั่งสำหรับรันทั้งชุด: make setup && make build && make bench (ประมาณ 30 นาที) แล้วเปิด index.html เพื่อดูผลของเครื่องคุณเอง
บทสรุป
Kotchasan ถูกออกแบบมาให้เบาและตรงไปตรงมา ผลที่ได้คือ Framework ที่วิ่งได้ 84% ของความเร็ว PHP เปล่า เร็วกว่า Laravel 6 เท่า ตอบสนองด้วย latency เท่า PHP เปล่า และใช้ทรัพยากรเซิร์ฟเวอร์น้อยที่สุดในบรรดา Framework ที่ทดสอบ โดยยังคงมีเครื่องมือครบสำหรับงานจริง ทั้ง routing, Query Builder, ORM, template, validation และระบบสิทธิ์
สำหรับเว็บที่ต้องรองรับผู้ใช้จำนวนมากบนงบเซิร์ฟเวอร์ที่จำกัด หรือต้องการ deploy บน shared hosting ทั่วไป ความเบาของ Kotchasan แปลงเป็นค่าใช้จ่ายที่ต่ำลงและประสบการณ์ผู้ใช้ที่ดีขึ้นโดยตรง หากยังไม่เชื่อตัวเลข อย่าลืมดาวน์โหลดชุดทดสอบไปรันด้วยตัวคุณเอง