php7函数类型限定对性能有没有影响-mile米乐体育

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函数类型限定对性能有没有影响”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!

展开全文
内容来源于互联网和用户投稿,文章中一旦含有米乐app官网登录的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系米乐app官网登录删除

最新文章

网站地图