require和require_once都是PHP函数,开发人员可以使用它们在某个特定的脚本中导入外部PHP文件。你可以根据应用程序的复杂度调用一次或若干次require_once/require。使用require(而不是require_once)可以提高应用程序的性能

测试前准备:

创建4个空的类来模拟主脚本要使用的外部PHP文件脚本。

ClassA.php:

  1. <?php
  2.  
  3. class ClassA
  4. {
  5.  
  6. }

ClassB.php:

  1. <?php
  2.  
  3. class ClassB
  4. {
  5.  
  6. }

ClassC.php:

  1. <?php
  2.  
  3. class ClassC
  4. {
  5.  
  6. }

ClassD.php:

  1. <?php
  2.  
  3. class ClassD
  4. {
  5.  
  6. }

使用require_once导入外部文件:

index.php:

  1. <?php
  2.  
  3. require_once './ClassA.php';
  4. require_once './ClassB.php';
  5. require_once './ClassC.php';
  6. require_once './ClassD.php';
  7.  
  8. echo "Only testing require_once";

重启服务器,使用ab压力测试工具模拟10000个请求,同一时间有5个并发请求。

  1. ab.exe -c 5 -n 10000 http://www.demo.com/optimization/index.php

测试结果:

  1. D:\phpStudy\Apache\bin>ab.exe -c 5 -n 10000 http://www.demo.com/optimization/index.php
  2. This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
  3. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  4. Licensed to The Apache Software Foundation, http://www.apache.org/
  5.  
  6. Benchmarking www.demo.com (be patient)
  7. Completed 1000 requests
  8. Completed 2000 requests
  9. Completed 3000 requests
  10. Completed 4000 requests
  11. Completed 5000 requests
  12. Completed 6000 requests
  13. Completed 7000 requests
  14. Completed 8000 requests
  15. Completed 9000 requests
  16. Completed 10000 requests
  17. Finished 10000 requests
  18.  
  19. Server Software: Apache/2.4.23
  20. Server Hostname: www.demo.com
  21. Server Port: 80
  22.  
  23. Document Path: /optimization/index.php
  24. Document Length: 25 bytes
  25.  
  26. Concurrency Level: 5
  27. Time taken for tests: 17.446 seconds
  28. Complete requests: 10000
  29. Failed requests: 0
  30. Total transferred: 2280000 bytes
  31. HTML transferred: 250000 bytes
  32. Requests per second: 573.20 [#/sec] (mean)
  33. Time per request: 8.723 [ms] (mean)
  34. Time per request: 1.745 [ms] (mean, across all concurrent requests)
  35. Transfer rate: 127.63 [Kbytes/sec] received
  36.  
  37. Connection Times (ms)
  38. min mean[+/-sd] median max
  39. Connect: 0 0 0.4 0 2
  40. Processing: 2 8 90.4 4 2503
  41. Waiting: 1 7 90.5 3 2503
  42. Total: 2 8 90.4 4 2504
  43.  
  44. Percentage of the requests served within a certain time (ms)
  45. 50% 4
  46. 66% 5
  47. 75% 5
  48. 80% 5
  49. 90% 5
  50. 95% 5
  51. 98% 6
  52. 99% 6
  53. 100% 2504 (longest request)

使用ab工具测试require_once,可以看到相应时间是8.723ms,该脚本每秒支持573.20个请求。

使用require导入外部文件:

index_1.php:

  1. <?php
  2.  
  3. require './ClassA.php';
  4. require './ClassB.php';
  5. require './ClassC.php';
  6. require './ClassD.php';
  7.  
  8. echo "Only testing require";

重启服务器,使用ab压力测试工具模拟10000个请求,同一时间有5个并发请求。

  1. ab.exe -c 5 -n 10000 http://www.demo.com/optimization/index_1.php

测试结果:

  1. D:\phpStudy\Apache\bin>ab.exe -c 5 -n 10000 http://www.demo.com/optimization/index_1.php
  2. This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
  3. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  4. Licensed to The Apache Software Foundation, http://www.apache.org/
  5.  
  6. Benchmarking www.demo.com (be patient)
  7. Completed 1000 requests
  8. Completed 2000 requests
  9. Completed 3000 requests
  10. Completed 4000 requests
  11. Completed 5000 requests
  12. Completed 6000 requests
  13. Completed 7000 requests
  14. Completed 8000 requests
  15. Completed 9000 requests
  16. Completed 10000 requests
  17. Finished 10000 requests
  18.  
  19. Server Software: Apache/2.4.23
  20. Server Hostname: www.demo.com
  21. Server Port: 80
  22.  
  23. Document Path: /optimization/index_1.php
  24. Document Length: 20 bytes
  25.  
  26. Concurrency Level: 5
  27. Time taken for tests: 17.207 seconds
  28. Complete requests: 10000
  29. Failed requests: 0
  30. Total transferred: 2230000 bytes
  31. HTML transferred: 200000 bytes
  32. Requests per second: 581.16 [#/sec] (mean)
  33. Time per request: 8.604 [ms] (mean)
  34. Time per request: 1.721 [ms] (mean, across all concurrent requests)
  35. Transfer rate: 126.56 [Kbytes/sec] received
  36.  
  37. Connection Times (ms)
  38. min mean[+/-sd] median max
  39. Connect: 0 0 0.4 0 21
  40. Processing: 1 8 86.5 4 2320
  41. Waiting: 1 7 86.5 3 2320
  42. Total: 1 8 86.5 4 2320
  43.  
  44. Percentage of the requests served within a certain time (ms)
  45. 50% 4
  46. 66% 5
  47. 75% 5
  48. 80% 5
  49. 90% 5
  50. 95% 6
  51. 98% 7
  52. 99% 7
  53. 100% 2320 (longest request)
  54.  
  55. D:\phpStudy\Apache\bin>ab.exe -c 5 -n 10000 http://www.demo.com/optimization/index_1.php
  56. This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
  57. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  58. Licensed to The Apache Software Foundation, http://www.apache.org/
  59.  
  60. Benchmarking www.demo.com (be patient)
  61. Completed 1000 requests
  62. Completed 2000 requests
  63. Completed 3000 requests
  64. Completed 4000 requests
  65. Completed 5000 requests
  66. Completed 6000 requests
  67. Completed 7000 requests
  68. Completed 8000 requests
  69. Completed 9000 requests
  70. Completed 10000 requests
  71. Finished 10000 requests

使用ab工具测试require,可以看到相应时间是8.604ms,该脚本每秒支持581.16个请求。

require和require_once经济性能对比的更多相关文章

  1. 记录:sea.js和require.js配置 与 性能对比

    最近有点忙,很久无写博客,记录一下之前的配置require.js和sea.js的配置.(有误有望提出 require.js 文件目录 /app(项目使用js) /lib(require.js jq存放 ...

  2. PHP函数include include_once require和require_once的区别

    了解下include.include_once.require和require_once这4个函数: include函数:会将指定的文件读入并且执行里面的程序: require函数:会将目标文件的内容 ...

  3. [原] KVM 环境下MySQL性能对比

    KVM 环境下MySQL性能对比 标签(空格分隔): Cloud2.0 [TOC] 测试目的 对比MySQL在物理机和KVM环境下性能情况 压测标准 压测遵循单一变量原则,所有的对比都是只改变一个变量 ...

  4. 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)

    如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...

  5. Java--Stream,NIO ByteBuffer,NIO MappedByteBuffer性能对比

    目前Java中最IO有多种文件读取的方法,本文章对比Stream,NIO ByteBuffer,NIO MappedByteBuffer的性能,让我们知道到底怎么能写出性能高的文件读取代码. pack ...

  6. C正则库做DNS域名验证时的性能对比

    C正则库做DNS域名验证时的性能对比   本文对C的正则库regex和pcre在做域名验证的场景下做评测. 验证DNS域名的正则表达式为: "^[0-9a-zA-Z_-]+(\\.[0-9a ...

  7. [转]require(),include(),require_once()和include_once()区别

    require(),include(),require_once()和include_once()区别 面试中最容易提到的一个PHP的问题,我想和大家共勉一下: require()和include() ...

  8. 开发语言性能对比,C++、Java、Python、LUA、TCC

    一直想做开发语言性能对比,刚好有时间都做了给大家参考一下, 编译类:C++和Java表现还不错 脚本类:TCC脚本动态运行C语言,性能比其他脚本快好多... 想玩TCC的同学下载测试包,TCC目录下修 ...

  9. php+mysql预查询prepare 与普通查询的性能对比

    prepare可以解决大访问量的网站给数据库服务器所带来的负载和开销,本文章通过实例向大家介绍预查询prepare与普通查询的性能对比,需要的朋友可以参考一下. 实例代码如下: <?php cl ...

随机推荐

  1. js 代码优化 (写的可以)

    Javascript是一门非常灵活的语言,我们可以随心所欲的书写各种风格的代码,不同风格的代码也必然也会导致执行效率的差异,开发过程中零零散散地接触到许多提高代码性能的方法,整理一下平时比较常见并且容 ...

  2. iOS -转载-开发之个人开发者账号转公司开发者账号

    ps  :  个人开发者账号升级公司开发者账号的话需要账号开启双重认证,没有开启的话需要开启(不然走到可以升级的那步的话,点击update升级会提示为了安全起见需要账号开启双双重认证,反正我走到upd ...

  3. Django实现组合搜索的方法示例

    目录 一.实现方法 二.基本原理 三.代码样例 方法1:纯模板语言实现 方法二:使用simpletag实现 四.其他变化 1.model定义 2.处理函数变化 3.simpletag相应改变   一. ...

  4. 53、Gif 控件GifView 的使用,播放gif图片

    GifView 是一个为了解决android中现在没有直接显示gif的view,只能通过mediaplay来显示这个问题的项目,其用法和 ImageView一样,支持gif图片.可监视GIF是否加载成 ...

  5. 红黑树C++实现

    1 /* 2 * rbtree.h 3 * 1. 每个节点是红色或者黑色 4 * 2. 根节点是黑色 5 * 3. 每个叶子节点是黑色(该叶子节点就空的节点) 6 * 4. 如果一个节点是红色,则它的 ...

  6. hdu1066(经典题)

    求N个数阶乘末尾除0后的数值. 主要的难点在于要把这个N个数所含的2和5的队数去掉. 网上方法很多很好. 不多说 Last non-zero Digit in N! Time Limit: 2000/ ...

  7. 【BZOJ1189】[HNOI2007]紧急疏散evacuate 动态加边网络流

    [BZOJ1189][HNOI2007]紧急疏散evacuate Description 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一块空 ...

  8. 170228、Linux操作系统安装ELK stack日志管理系统--(1)Logstash和Filebeat的安装与使用

    安装测试环境:Ubuntu 16.04.2 LTS 前言 (1)ELK是Elasticsearch,Logstash,Kibana 开源软件的集合,对外是作为一个日志管理系统的开源方案.它可以从任何来 ...

  9. 160801、BlockingQueue处理多线程

    前面介绍过spring的taskExecutor,今天介绍一个jdk里处理多线程的方法 一.spring的配置文件(注入bean) <bean id="cmsClickButtonMn ...

  10. 160722、Javascript函数节流

    最近在做网页的时候有个需求,就是浏览器窗口改变的时候需要改一些页面元素大小,于是乎很自然的想到了window的resize事件,于是乎我是这么写的 <!DOCTYPE html> < ...