目录
主流PHP框架性能非权威测试
性能测试
结果说明
开始测试
增加一个控制器,并在控制器中输入10000次HelloWorld
优化框架
结论
最后
首页 后端开发 php教程 主流PHP框架性能非权威测试

主流PHP框架性能非权威测试

Jun 20, 2016 pm 12:29 PM

主流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
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1280
29
C# 教程
1257
24
说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? 说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型? PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型? Apr 17, 2025 am 12:25 AM

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

PHP和框架:现代化语言 PHP和框架:现代化语言 Apr 18, 2025 am 12:14 AM

PHP在现代化进程中仍然重要,因为它支持大量网站和应用,并通过框架适应开发需求。1.PHP7提升了性能并引入了新功能。2.现代框架如Laravel、Symfony和CodeIgniter简化开发,提高代码质量。3.性能优化和最佳实践进一步提升应用效率。

为什么要使用PHP?解释的优点和好处 为什么要使用PHP?解释的优点和好处 Apr 16, 2025 am 12:16 AM

PHP的核心优势包括易于学习、强大的web开发支持、丰富的库和框架、高性能和可扩展性、跨平台兼容性以及成本效益高。1)易于学习和使用,适合初学者;2)与web服务器集成好,支持多种数据库;3)拥有如Laravel等强大框架;4)通过优化可实现高性能;5)支持多种操作系统;6)开源,降低开发成本。

PHP的影响:网络开发及以后 PHP的影响:网络开发及以后 Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

See all articles