go、thinkphp8、webman数据读取并发测试、性能测试

前期准备:本地搭建程序运行所需环境,分别编写go,thinkphp8和webman程序,确保程序运行正常,新建mysql的student表,模拟存储学生信息,共计3646条数据,分别使用go语言、thinkphp8和webman编写查询程序,查询出student表所有数据信息并返回json格式数据
请求测试软件:apifox自动化测试
1.设置三个请求接口
go请求api地址:http://localhost:8080/data/
thinkphp8请求api地址:http://www.one.cn/index/getData (www.one.cn为phpstudy本地绑定测试域名)
webman请求api地址:http://127.0.0.1:8787/admin/Index/index
2.自动化功能测试数据[受限于本地电脑配置,我循环次数设置不超过800,可根据自己电脑配置自行设置]
(一)、循环次数:800 线程数(操作人数): 1 时间间隔:3ms[不设置时间间隔时apifox在测试完毕后闪退]
go:
接口请求耗时 7.31 秒
平均接口请求耗时 9.33 毫秒

thinkphp8:
接口请求耗时 33.53 秒
平均接口请求耗时 43.05 毫秒

webman:
接口请求耗时 7.59 秒
平均接口请求耗时 9.74 毫秒

(二)循环次数: 5 线程数(操作人数):50 时间间隔:3ms [根据本地电脑配置设置]
go:
总耗时 67.39 秒
接口请求耗时 327.25 秒
平均接口请求耗时 1309 毫秒

thinkphp8:
总耗时 81.89 秒
接口请求耗时 231.75 秒
平均接口请求耗时 927 毫秒

webman:
总耗时 75.411 秒
接口请求耗时 120 秒
平均接口请求耗时 480 毫秒

3.自动化性能测试
并发用户数50 运行时间10分钟 爬坡时间1分钟[在测试持续时间的前 X 分钟,线性逐渐增加并行用户数量直到设置的虚拟用户数。设置为 0 即代表从测试一开始就用设置的虚拟用户数运行。]
go:
总请求次数:21,796
每秒接口请求数:35.90
平均响应时间:33 ms
最小响应时间:8ms
最大响应时间:2753ms

thinkphp8:
总请求次数:14,903
每秒接口请求数:24.50
平均响应时间:165 ms
最小响应时间:53ms
最大响应时间:6981ms

webman:
总请求次数:20,003
每秒接口请求数:32.98
平均响应时间:60 ms
最小响应时间:12ms
最大响应时间:2877ms

 

结论:
  1. 当循环次数为 800,线程数为 1 时:
    • Go 语言在接口请求耗时和平均接口请求耗时方面表现较好,用时较短。
    • ThinkPHP8 和 Webman 的性能相对 Go 稍弱,但三者在单线程下的性能差距不是特别巨大。
  2. 当循环次数为 5,线程数为 50 时:
    • 总体来看,Webman 在总耗时和接口请求耗时方面表现较为出色。
    • ThinkPHP8 的性能处于中间水平。
    • Go 的平均接口请求耗时较长,表现相对较差。
建议:
  对之前使用thinkphp或laravel开发的开发人员,企业项目需要兼顾并发和性能时可选择webman,上手快,如果涉及处理大量并发请求和计算密集型任务的系统,则选择go,日常的企业项目,则使用thinkphp或laravel足够满足并发要求,读者可根据实际的项目要求进行选择。
posted @ 2024-12-16 18:15  没用的阿吉是剑神  阅读(11)  评论(0编辑  收藏  举报