1ภาพรวม — ความเร็วสูงสุดต่อวินาที (RPS)
สถานการณ์ /plaintext (ส่ง "Hello, World!" กลับ) สะท้อนต้นทุน request pipeline ของเฟรมเวิร์กแท้ ๆ — แท่งทึบ = median ของทุกรัน, แถบจาง = ช่วงต่ำ-สูงสุดที่วัดได้
2ผลรายสถานการณ์
แต่ละการ์ดเรียงจากเร็วไปช้า · เปอร์เซ็นต์คือสัดส่วนเทียบ PHP เปล่าในสถานการณ์เดียวกัน
3ตารางตัวเลขครบทุกมิติ (median)
RPS · เปอร์เซ็นต์เทียบ PHP เปล่า · latency p50/p99 หน่วยมิลลิวินาที
4น้ำหนักต่อ request — ทำไม Kotchasan เร็ว
วัดจาก endpoint /info (median 7 ครั้ง) และขนาดแอปใน container · ยิ่งโหลดไฟล์/ใช้ memory น้อย ยิ่งมี overhead ต่ำ
5การตรวจสอบซ้ำ (Reproducibility)
6สภาพแวดล้อม (Fingerprint ของรันนี้)
บันทึกอัตโนมัติใน meta.json ประกอบผล — เพื่อให้รู้ว่าตัวเลขชุดนี้เกิดบนสภาพแวดล้อมใดแน่นอน
7วิธีวัด & ข้อจำกัดที่ควรรู้ก่อนตีความ
- สถานการณ์ 5 แบบ: plaintext (framework overhead), json (serialization), db (query 1 แถว), queries×20 (prepared stmt ใช้ซ้ำ), fortunes (template + HTML escaping + UTF-8 รวมแถวภาษาไทยและแถวที่ต้อง escape <script>)
- Verify ก่อนวัดเสมอ: 30 endpoint (6 แอป × 5 สถานการณ์) ต้องผ่าน contract — สถานะ 200, content-type ถูก, รูปร่างข้อมูลถูก และ fortunes HTML ต้อง byte-identical ข้ามทุกเฟรมเวิร์ก จึงเริ่มวัด (พิสูจน์ว่าทุกแอปทำงานเหมือนกันจริง)
- Interleave: วนสลับ run→scenario→app ทั้งหมด เพื่อให้สภาพเครื่อง (thermal/cache/background) กระทบทุกเฟรมเวิร์กเท่ากัน + warmup ก่อนวัด
- Production config: ทุกเฟรมเวิร์กรันโหมด production พร้อม cache config/route/view (Laravel, Symfony, CI4) และไม่มีเฟรมเวิร์กไหนเริ่ม session — route ของ Laravel สมัครนอก web middleware group เพราะ load client ไม่ส่ง cookie (มิฉะนั้นจะกลายเป็นวัดการสร้าง session file ใหม่ทุก request)
- สภาพแวดล้อมเดียวกันเป๊ะ: ทุกแอปใช้ PHP image/php.ini/php-fpm (16 workers)/nginx/MySQL เดียวกัน · DB ใช้ raw PDO + SQL เดียวกัน (persistent) — ตัวแปร ORM ออกจากการวัด
ข้อจำกัด
- นี่คือ micro-benchmark ของ overhead ต่อ request ไม่ใช่ "แอปจริงบนเฟรมเวิร์กไหนเร็วกว่า" — แอปจริงมี cache, queue, external API ที่ทำให้สัดส่วนต่างเล็กลง
- ไม่ได้วัด ORM/Query Builder ของแต่ละค่าย (ใช้ raw PDO เท่ากันหมดโดยตั้งใจ)
- ตัวเลข RPS เปรียบเทียบได้เฉพาะในเครื่องเดียวกัน/รันเดียวกัน — เครื่องอื่นให้ดูอัตราส่วน % เทียบ PHP เปล่า
- เฟรมเวิร์กที่ช้ากว่ามักแลกมาด้วยฟีเจอร์ที่ครบกว่า (validation, ORM, ecosystem) — benchmark วัดต้นทุนต่อ request ไม่ได้ตัดสินว่าเฟรมเวิร์กไหน "ดีกว่า"