PHP7函数类型限定对性能有没有影响
PHP7函数类型限定对性能有没有影响
这篇文章主要介绍PHP7函数类型限定对性能有没有影响,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
PHP7函数类型限定
(1) 介绍
函数参数类型限定(包括返回值、成员属性)从PHP5开始支持的,但是支持的类型不多,PHP7做了扩展:int/string/bool/object 等
作用
functiontestInt(int$intNum){var_dump($intNum);}testInt("123");//int(123)
避免错误调用,标明类型,只能传递同类型的参数,尤其多人协同开发时。
推荐学习:《PHP视频教程》
如果不是可以自动转换数据类型,如下,当然前提是待转化类型可以正常转化
而本文正是测试类型限定对性能的影响程度
注意 参数、返回值如果跟设定的类型不一致时会报错,不是百分百确认的需要手动转化下
(2) 压测
运行环境
PHP 7.2.34
Laravel 5.8
AB 2.3
单机配置
型号名称 MacBook Pro
处理器名称 Quad-Core Intel Core i7
内存 8 GB
核总数 4
AB
-n 压测请求数
-c 并发数
-p POST请求时指定所需携带参数的文件
-r 遇到错误响应不退出,操作系统有防高并发攻击保护措施 (apr_socket_recv: Connection reset by peer)
使用AB (Apache Benchmark) 进行压测,由于不是正式的压测,所以此处只关心综合指标:Requests per second (平均每秒请求数)
主要参数
设置项目 设置两个 POST 接口,没有业务逻辑、中间件操作等,如下
/*****1普通接口*****///CommonUserControllerpublicfunctioncreateUser(Request$request){$this->validate($request,['name'=>'required|string','age'=>'required|integer','sex'=>['required',Rule::in([1,2])],]);(newCommonUserModel())->createUser($request['age'],$request['name'],$request['sex'],$request['address']??'');returnresponse()->json(['status'=>200,'msg'=>'ok']);}//CommonUserModelpublicfunctioncreateUser($sex,$age,$name,$address){if(empty($sex)||empty($age)||empty($name))returnfalse;//省略DB操作returntrue;}/*****2类型限定接口*****///TypeUserControllerpublicfunctioncreateUser(Request$request):JsonResponse{$this->validate($request,['name'=>'required|string','age'=>'required|integer','sex'=>['required',Rule::in([1,2])],]);(newTypeUserModel())->createUser($request['age'],$request['name'],$request['sex'],$request['address']??'');returnresponse()->json(['status'=>200,'msg'=>'ok']);}//TypeUserModelpublicfunctioncreateUser(int$age,string$name,int$sex,string$address):bool{if(empty($sex)||empty($age)||empty($name)){returnfalse;}//省略DB操作returntrue;}
(3) 实施
共进行五次压测,配置及结果展示如下 (统一删除:| grep 'Requests per second')
/*****第一次*****///类型限定接口rps=456.16ab-n100-c10-p'/tmp/ab_post_data.json'-T'application:json'http://www.laravel_type_test.com/api/type/create_user//普通接口rps=450.12ab-n100-c10-p'/tmp/ab_post_data.json'-T'application:json'http://www.laravel_type_test.com/api/common/create_user/*****第二次*****///类型限定接口rps=506.74ab-n1000-c100-p'/tmp/ab_post_data.json'-T'application:json'http://www.laravel_type_test.com/api/type/create_user//普通接口rps=491.24ab-n1000-c100-p'/tmp/ab_post_data.json'-T'application:json'http://www.laravel_type_test.com/api/common/create_user/*****第三次*****///类型限定接口rps=238.43ab-n5000-c150-p'/tmp/ab_post_data.json'-T'application:json'-rhttp://www.laravel_type_test.com/api/type/create_user//普通接口rps=237.16ab-n5000-c150-p'/tmp/ab_post_data.json'-T'application:json'-rhttp://www.laravel_type_test.com/api/common/create_user/*****第四次*****///类型限定接口rps=209.21ab-n10000-c150-p'/tmp/ab_post_data.json'-T'application:json'-rhttp://www.laravel_type_test.com/api/type/create_user//普通接口rps=198.01ab-n10000-c150-p'/tmp/ab_post_data.json'-T'application:json'-rhttp://www.laravel_type_test.com/api/common/create_user/*****第五次*****///类型限定接口rps=191.17ab-n100000-c150-p'/tmp/ab_post_data.json'-T'application:json'-rhttp://www.laravel_type_test.com/api/type/create_user//普通接口rps=190.55ab-n100000-c150-p'/tmp/ab_post_data.json'-T'application:json'-rhttp://www.laravel_type_test.com/api/common/create_user
(4) 结果
压测不算太严谨,结果仅供参考
类型限定对性能的提升没有预期的大,很微小,不过还是推荐这种写法
以上是“PHP7函数类型限定对性能有没有影响”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
php7+中怎么使用openssl替代mcrypt进行AES加密解密
这篇文章主要介绍php7+中怎么使用openssl替代mcrypt进行AES加密解密,文中介绍的非常详细,具有一定的参考价值,感兴...
-
PHP7中生命周期指的是什么
-
declare如何在PHP7中使用
-
如何在PHP7中使用匿名类
-
PHP7中如何使用Closure :: call
这篇“PHP7中如何使用Closure::call”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定...
-
PHP7打开Opcache的方法
-
php7中文乱码怎么办
小编给大家分享一下php7中文乱码怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有...
-
php7连接mysql数据库的方法
这篇文章主要为大家展示了php7连接mysql数据库的方法,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起...
-
怎么安装php7并与php5共存
这篇“怎么安装php7并与php5共存”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“怎么安装php7并与php5共...
-
Windows Server 2016服务器配置指南之怎么搭建PHP7运行环境