ฉันมักจะใช้ Micro & Router ดังนั้นฉันจึงตัดสินใจทำเกณฑ์มาตรฐาน เกณฑ์มาตรฐานนี้ได้รับการขอบคุณ (@KenJIS) มาตรฐาน PHP-Framework ฉันเปลี่ยน AB เป็น AWK เพิ่มเป็น "ประเภทของเฟรมเวิร์ก" และอย่างอื่น ...
- เบนช์มาร์กพร้อมช่วยเหลือ wrk https://github.com/wg/wrk
โครงการนี้พยายามวัดค่าใช้จ่ายขั้นต่ำ (ค่าใช้จ่ายขั้นต่ำ bootstrap) ของกรอบ PHP ในโลกแห่งความเป็นจริง
ดังนั้นฉันคิดว่าแอปพลิเคชันขั้นต่ำสำหรับเกณฑ์มาตรฐานไม่ควรรวม:
ส่วนประกอบเช่น Template Engine หรือ ORM/Database Libraries อยู่นอกขอบเขตในโครงการนี้
นี่คือสาขา master
--optimize-autoloaderบางคนอาจคิดว่าการใช้การกำหนดค่าเริ่มต้นไม่ยุติธรรม แต่ฉันคิดว่าการกำหนดค่าเริ่มต้นของเฟรมเวิร์กเป็นการยืนยันว่ามันคืออะไร การกำหนดค่าเริ่มต้นเป็นจุดเริ่มต้นที่ดีในการทราบกรอบการทำงาน และฉันไม่สามารถเพิ่มประสิทธิภาพทั้งหมดได้ เฟรมเวิร์กบางอย่างได้รับการปรับให้เหมาะสมบางส่วนไม่ได้ไม่ยุติธรรม ดังนั้นฉันจะไม่ลบส่วนประกอบ/การกำหนดค่าใด ๆ
แต่ถ้าคุณมีความสนใจในการเปรียบเทียบกับการเพิ่มประสิทธิภาพ (ลบส่วนประกอบ/การกำหนดค่าที่ไม่ได้ใช้) ดูที่การเพิ่มประสิทธิภาพสาขา
หากคุณพบสิ่งผิดปกติกับรหัสของฉันโปรดส่งคำขอดึง แต่โปรดทราบการเพิ่มประสิทธิภาพสำหรับ "Hello World!" ไม่เป็นที่ยอมรับ การสร้าง "สวัสดีโลก!" เร็วที่สุด! " แอปพลิเคชันไม่ใช่เป้าหมายในโครงการนี้
นี่คือเกณฑ์มาตรฐานของฉันไม่ใช่ของคุณ ฉันขอแนะนำให้คุณทำงานในสภาพแวดล้อม (การผลิตเทียบเท่า) ของคุณ (2019/01/27)
แสดงแผนภูมิ 



centos 7.6 เซิร์ฟเวอร์ของฉัน
| กรอบ | คำขอต่อวินาที | ญาติ | หน่วยความจำสูงสุด | ญาติ | ไฟล์ | พิมพ์ |
|---|---|---|---|---|---|---|
| การไม่ทำงาน | 11,742.54 | 19.7 | 0.41 | 1.0 | 1 | การไม่ทำงาน |
| Altorouter | 3,619.92 | 6.1 | 0.50 | 1.2 | 6 | เราเตอร์ |
| php-router | 3,358.57 | 5.6 | 0.52 | 1.3 | 8 | เราเตอร์ |
| ฟูสทูเต้ | 2,463.59 | 4.1 | 0.55 | 1.3 | 15 | เราเตอร์ |
| เที่ยวบิน | 1,660.40 | 2.8 | 0.68 | 1.6 | 15 | จุลภาค |
| เลื้อยคลาน | 1,617.18 | 2.7 | 0.66 | 1.6 | 16 | จุลภาค |
| การ จำกัด | 1,439.16 | 2.4 | 1.02 | 2.5 | 6 | จุลภาค |
| siler-1.3 | 1,397.18 | 2.3 | 0.88 | 2.1 | 22 | จุลภาค |
| klein.php | 1,271.65 | 2.1 | 0.78 | 1.9 | 20 | เราเตอร์ |
| การทำงานของ Bearframework | 1,065.35 | 1.8 | 0.94 | 2.3 | 22 | จุลภาค |
| fatfree | 1,049.13 | 1.8 | 1.50 | 3.6 | 6 | จุลภาค |
| Slim-3.x | 595.05 | 1.0 | 1.39 | 3.4 | 56 | จุลภาค |
macos mojave 10.14.2 เดสก์ท็อปของฉัน
| กรอบ | คำขอต่อวินาที | ญาติ | หน่วยความจำสูงสุด | ญาติ | ไฟล์ | พิมพ์ |
|---|---|---|---|---|---|---|
| การไม่ทำงาน | 4,573.15 | 7.2 | 0.37 | 1.0 | 1 | การไม่ทำงาน |
| Altorouter | 2,617.56 | 4.1 | 0.47 | 1.3 | 6 | เราเตอร์ |
| php-router | 2,417.23 | 3.8 | 0.47 | 1.3 | 8 | เราเตอร์ |
| ฟูสทูเต้ | 1,947.44 | 3.1 | 0.51 | 1.4 | 15 | เราเตอร์ |
| เที่ยวบิน | 1,545.02 | 2.4 | 0.63 | 1.7 | 15 | จุลภาค |
| เลื้อยคลาน | 1,410.26 | 2.2 | 0.61 | 1.6 | 16 | จุลภาค |
| siler-1.3 | 1,330.79 | 2.1 | 0.77 | 2.1 | 22 | จุลภาค |
| klein.php | 1,246.66 | 2.0 | 0.74 | 2.0 | 20 | เราเตอร์ |
| การ จำกัด | 1,193.01 | 1.9 | 1.00 | 2.7 | 6 | จุลภาค |
| การทำงานของ Bearframework | 1,108.75 | 1.8 | 0.90 | 2.4 | 22 | จุลภาค |
| fatfree | 1,062.73 | 1.7 | 1.44 | 3.9 | 6 | จุลภาค |
| Slim-3.x | 631.79 | 1.0 | 1.31 | 3.5 | 56 | จุลภาค |
หมายเหตุ (1): มาตรฐานนี้ถูก จำกัด โดย wrk https://github.com/wg/wrk ประสิทธิภาพ
ติดตั้งซอร์สโค้ดเป็น http: // localhost/php-micro-router-framework-benchmark/:
$ git clone https://github.com/dejurin/php-micro-router-framework-benchmark.git
$ cd php-micro-router-framework-benchmark
$ bash setup.sh
เรียกใช้เกณฑ์มาตรฐาน:
$ bash benchmark.sh
ดู http: // localhost/php-micro-router-framework-benchmark/
หากคุณต้องการเปรียบเทียบเฟรมเวิร์ก:
$ bash setup.sh PHP-Router/ flight/ lumen/
$ bash benchmark.sh PHP-Router/ flight/ lumen/
ฉันเพิ่มด้านล่างใน /etc/sysctl.conf
# Added
net.netfilter.nf_conntrack_max = 100000
net.nf_conntrack_max = 100000
net.ipv4.tcp_max_tw_buckets = 180000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10
และเรียกใช้ sudo sysctl -p
หากคุณต้องการดูการกำหนดค่าปัจจุบันให้เรียกใช้ sudo sysctl -a