广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP7函数类型限定对性能有没有影响
  • 702
分享到

PHP7函数类型限定对性能有没有影响

2023-06-29 04:06:42 702人浏览 安东尼
摘要

这篇文章主要介绍PHP7函数类型限定对性能有没有影响,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php7函数类型限定(1) 介绍函数参数类型限定(包括返回值、成员属性)从PHP5开始支持的,但是支持的类型不多,PH

这篇文章主要介绍PHP7函数类型限定对性能有没有影响,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

php7函数类型限定

(1) 介绍
  • 函数参数类型限定(包括返回值、成员属性)从PHP5开始支持的,但是支持的类型不多,PHP7做了扩展:int/string/bool/object 等

  • 作用

    function testInt(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 接口,没有业务逻辑、中间件操作等,如下

// CommonUserControllerpublic function createUser(Request $request){    $this->validate($request, [        'name' => 'required|string',        'age'  => 'required|integer',        'sex'  => ['required', Rule::in([1, 2])],    ]);    (new CommonUserModel())->createUser($request['age'], $request['name'], $request['sex'], $request['address'] ?? '');    return response()->JSON(['status' => 200, 'msg' => 'ok']);}// CommonUserModelpublic function createUser($sex, $age, $name, $address){    if(empty($sex) || empty($age) || empty($name))  return false;    // 省略DB操作    return true;}// TypeUserControllerpublic function createUser(Request $request): jsonResponse{    $this->validate($request, [        'name' => 'required|string',        'age'  => 'required|integer',        'sex'  => ['required', Rule::in([1, 2])],    ]);    (new TypeUserModel())->createUser($request['age'], $request['name'], $request['sex'], $request['address'] ?? '');    return response()->json(['status' => 200, 'msg' => 'ok']);}// TypeUserModelpublic function createUser(int $age, string $name, int $sex, string $address): bool{    if(empty($sex) || empty($age) || empty($name)){        return false;    }    // 省略DB操作    return true;}
(3) 实施
  • 共进行五次压测,配置及结果展示如下 (统一删除:| grep 'Requests per second')

// 类型限定接口 rps=456.16ab -n 100  -c 10 -p '/tmp/ab_post_data.json' -T 'application:json'  Http://www.laravel_type_test.com/api/type/create_user// 普通接口 rps=450.12ab -n 100  -c 10 -p '/tmp/ab_post_data.json' -T 'application:json'  http://www.laravel_type_test.com/api/common/create_user// 类型限定接口 rps=506.74ab -n 1000  -c 100 -p '/tmp/ab_post_data.json' -T 'application:json'  http://www.laravel_type_test.com/api/type/create_user// 普通接口 rps=491.24ab -n 1000  -c 100 -p '/tmp/ab_post_data.json' -T 'application:json'  http://www.laravel_type_test.com/api/common/create_user// 类型限定接口 rps=238.43 ab -n 5000  -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user// 普通接口 rps=237.16ab -n 5000  -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user// 类型限定接口 rps=209.21ab -n 10000  -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user// 普通接口 rps=198.01ab -n 10000  -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user// 类型限定接口 rps=191.17ab -n 100000  -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user// 普通接口 rps=190.55ab -n 100000  -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user
(4) 结果
  • 压测不算太严谨,结果仅供参考

  • 类型限定对性能的提升没有预期的大,很微小,不过还是推荐这种写法

以上是“PHP7函数类型限定对性能有没有影响”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网PHP编程频道!

--结束END--

本文标题: PHP7函数类型限定对性能有没有影响

本文链接: https://www.lsjlt.com/news/322588.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP7函数类型限定对性能有没有影响
    这篇文章主要介绍PHP7函数类型限定对性能有没有影响,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PHP7函数类型限定(1) 介绍函数参数类型限定(包括返回值、成员属性)从PHP5开始支持的,但是支持的类型不多,PH...
    99+
    2023-06-29
  • PostgreSQL中不同数据类型对查询性能的影响有哪些
    本篇内容主要讲解“PostgreSQL中不同数据类型对查询性能的影响有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中不同数据类型对查询...
    99+
    2022-10-18
  • Go语言中的数据类型对程序的性能有何影响?
    Go语言是一种现代化的编程语言,它被广泛应用于云计算、网络编程、分布式系统和人工智能等领域。作为一门编程语言,数据类型对程序的性能有着至关重要的影响。在本文中,我们将探讨Go语言中的数据类型对程序性能的影响,并且将通过演示代码来说明这些影响...
    99+
    2023-08-18
    数据类型 面试 git
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作