热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

3个主流PHP框架的性能测试

后端开发|php教程3个主流PHP框架的性能测试后端开发-php教程主流PHP框架性能非权威测试电影源码php,Vscode中使用js,ubuntu16缺陷,tomcat是exe文

后端开发|php教程3 个主流 PHP 框架的性能测试
3 个主流 PHP 框架的性能测试
后端开发-php教程
主流PHP框架性能非权威测试
电影源码php,Vscode中使用js,ubuntu 16缺陷,tomcat是exe文件,文献数据爬虫,php solr的使用,如何做seo教程推广,网赚织梦源码网站模板,模板怎么安装lzw
作为一个PHP开发者,而且是初创企业团队的技术开发者,选择开发框架是个很艰难的事情。
动易论坛 源码,vscode 配置git,ubuntu dvsdk,tomcat部署界面,sqlite支持跨进程嘛,jquery多个广告插件下载,所有的前端框架有什么不同,爬虫处理验证码字母,php获取api,高明seo优化教程,模特相册网站,手机网页 论坛开源,女性门户资讯类网站织梦dedecms模板lzw
用ThinkPHP的话,招聘一个刚从培训机构出来的开发者就可以上手了,但是性能和后期代码解耦是个让人头疼的事情。不过很多第三方功能不需要自己写,众多大牛已经给铺好路了。
laravel 5.1项目源码,vscode里怎么去掉空白行,ss ubuntu 搭建,tomcat显示运行图标,python 并行爬虫,php站点渗透测试,莱山区seo优化推广营销lzw
用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改为false

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

打赏支持作者写出更多好文章,谢谢!

任选一种支付方式

关于作者:李虎头

就职于11Space,担任PHP架构师一职,PPPHP框架作者 个人主页 · 我的文章 · 1 ·


推荐阅读
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
author-avatar
zf19920222
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有