主流PHP框架性能非权威测试
主流PHP框架性能非权威测试
作为一个PHP开发者,而且是初创企业团队的技术开发者,选择开发框架是个很艰难的事情。
用 ThinkPHP的话,招聘一个刚从培训机构出来的开发者就可以上手了,但是性能和后期代码解耦是个让人头疼的事情。不过很多第三方功能不需要自己写,众多大牛已经给铺好路了。
用 Laravel的话,传说写起来很爽扩展性也够,但是学习成本有点高,总不能给初级开发者半个月的时间去学习框架吧。而且据说江湖人士透漏, Laravel性能不怎么样,文档也并不是特别丰富。
用 Yii的话,语法有点啰嗦,前后端代码分离有点小麻烦,不过性能是非常好的,而且已经有众多国内大公司在使用了,出现意外可以快速的找到大牛答疑解惑。
不如做个简单的性能评测,选个性能出色的总不会出错
性能测试
-
测试时间: 2016年05月06日
-
测试工具: siege(因为MAC系统的 ab总是会出现 pr_socket_recv: Connection reset by peer (54)的错误,所以选择了 siege)
-
测试机器: MacPro Core i5 处理器/8GB内存/256GB SSD闪存
-
测试环境: Apache PHP5.6
-
框架版本: ThinkPHP 3.2.3 Laravel 5.2 Yii2.0.5
-
测试原则: 每次测试循环5次,取中等数据
补充说明:所有项目都是让在子目录中
结果说明
Transactions: 2119 hits 处理请求总数量Availability: 96.85 % 可用性Elapsed time: 9.74 secs 运行时间Data transferred: 1.31 MB 数据传输量Response time: 0.60 secs 响应时间Transaction rate: 217.56 trans/sec 每秒处理效率Throughput: 0.13 MB/sec 每秒处理数据Concurrency: 130.28 并发Successful transactions: 2162 成功的请求Failed transactions: 69 失败的请求Longest transaction: 2.85 最长的单个请求Shortest transaction: 0.01 最短的单个请求
开始测试
增加一个控制器,并在控制器中输入10000次HelloWorld
并发50循环10次:
首先向我们走来的是ThinkPHP,看上去还行
Transactions: 500 hitsAvailability: 100.00 %Elapsed time: 2.81 secsData transferred: 52.45 MBResponse time: 0.26 secsTransaction rate: 177.94 trans/secThroughput: 18.67 MB/secConcurrency: 47.10Successful transactions: 500Failed transactions: 0Longest transaction: 0.48Shortest transaction: 0.03
然后是Laravle,嗯,略微有些失望
Transactions: 500 hitsAvailability: 100.00 %Elapsed time: 13.33 secsData transferred: 52.45 MBResponse time: 1.27 secsTransaction rate: 37.51 trans/secThroughput: 3.93 MB/secConcurrency: 47.55Successful transactions: 500Failed transactions: 0Longest transaction: 3.64Shortest transaction: 0.07
最后赛前比较看好的Yii
Transactions: 500 hitsAvailability: 100.00 %Elapsed time: 4.84 secsData transferred: 52.45 MBResponse time: 0.46 secsTransaction rate: 103.31 trans/secThroughput: 10.84 MB/secConcurrency: 47.65Successful transactions: 500Failed transactions: 0Longest transaction: 0.88Shortest transaction: 0.04
并发200循环10次:
首先是ThinkPHP
Transactions: 1977 hitsAvailability: 98.85 %Elapsed time: 10.03 secsData transferred: 207.40 MBResponse time: 0.95 secsTransaction rate: 197.11 trans/secThroughput: 20.68 MB/secConcurrency: 187.68Successful transactions: 1977Failed transactions: 23Longest transaction: 1.22Shortest transaction: 0.02
然后是Laravel
Transactions: 1890 hitsAvailability: 94.50 %Elapsed time: 51.85 secsData transferred: 198.27 MBResponse time: 4.88 secsTransaction rate: 36.45 trans/secThroughput: 3.82 MB/secConcurrency: 178.00Successful transactions: 1890Failed transactions: 110Longest transaction: 26.01Shortest transaction: 0.07
最后是Yii
Transactions: 1996 hitsAvailability: 99.80 %Elapsed time: 18.95 secsData transferred: 209.39 MBResponse time: 1.79 secsTransaction rate: 105.33 trans/secThroughput: 11.05 MB/secConcurrency: 188.57Successful transactions: 1996Failed transactions: 4Longest transaction: 3.29Shortest transaction: 0.10
没想到在没有优化的情况下,ThinkPHP的速度是最快的,Yii略微多一些,Laravel步履蹒跚的跑完了测试。结果是有些出人意料的,不过上述的测试只代表了开发环境,下面会对框架进行优化,模拟线上环境。
优化框架
ThinkPHP:
APP_DEBUG改为true
Laravel:
APP_DEBUG改为falsephp artisan route:cachephp artisan optimizephp artisan config:cachecomposer dumpautoload -o
Yii:
YII_DEBUG改为falsecomposer dumpautoload -o
并发200循环10次:
ThinkPHP
Transactions: 1655 hitsAvailability: 82.75 %Elapsed time: 8.21 secsData transferred: 173.62 MBResponse time: 0.69 secsTransaction rate: 201.58 trans/secThroughput: 21.15 MB/secConcurrency: 139.29Successful transactions: 1655Failed transactions: 345Longest transaction: 7.83Shortest transaction: 0.00
Laravel:
Transactions: 1520 hitsAvailability: 76.00 %Elapsed time: 34.95 secsData transferred: 159.45 MBResponse time: 3.15 secsTransaction rate: 43.49 trans/secThroughput: 4.56 MB/secConcurrency: 136.84Successful transactions: 1520Failed transactions: 480Longest transaction: 19.18Shortest transaction: 0.00
Yii:
Transactions: 1704 hitsAvailability: 85.20 %Elapsed time: 15.16 secsData transferred: 178.76 MBResponse time: 1.46 secsTransaction rate: 112.40 trans/secThroughput: 11.79 MB/secConcurrency: 164.21Successful transactions: 1704Failed transactions: 296Longest transaction: 9.04Shortest transaction: 0.00
比较奇怪的一点,当框架关掉调试模式后都出现了较多失败的情况。不过明显的看到,Laravel进行简单的优化后,性能大大的提升了,但还是低于其他两个框架。
结论
在测试的过程中,其他我的心情是沮丧的,感觉自己的三观世界已经崩塌了,崩塌至渣。
-
ThinkPHP的性能比Yii高出一倍,比Laravel高出近四倍
-
Yii的性能比较中庸,但是在测试中会明显发现请求失败的情况比其他两个框架要少
-
Laravel依旧优雅,不过性能堪忧,用网友的话形容比较好 学之者生用之者死
最后
我的项目最后使用了自建框架进行开发,得益于composer的强大,开发的过程非常顺利,最后附上自有框架在200并发10次循环的数据,框架开源但是更新比较忙,欢迎在github上搜索PPPHP,和我一起搭建框架。
Transactions: 1672 hitsAvailability: 83.60 %Elapsed time: 6.18 secsData transferred: 175.40 MBResponse time: 0.57 secsTransaction rate: 270.55 trans/secThroughput: 28.38 MB/secConcurrency: 153.16Successful transactions: 1672Failed transactions: 328Longest transaction: 4.57Shortest transaction: 0.01

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。
