require和require_once经济性能对比
require和require_once都是PHP函数,开发人员可以使用它们在某个特定的脚本中导入外部PHP文件。你可以根据应用程序的复杂度调用一次或若干次require_once/require。使用require(而不是require_once)可以提高应用程序的性能。
测试前准备:
创建4个空的类来模拟主脚本要使用的外部PHP文件脚本。
ClassA.php:
- <?php
- class ClassA
- {
- }
ClassB.php:
- <?php
- class ClassB
- {
- }
ClassC.php:
- <?php
- class ClassC
- {
- }
ClassD.php:
- <?php
- class ClassD
- {
- }
使用require_once导入外部文件:
index.php:
- <?php
- require_once './ClassA.php';
- require_once './ClassB.php';
- require_once './ClassC.php';
- require_once './ClassD.php';
- echo "Only testing require_once";
重启服务器,使用ab压力测试工具模拟10000个请求,同一时间有5个并发请求。
- ab.exe -c 5 -n 10000 http://www.demo.com/optimization/index.php
测试结果:
- D:\phpStudy\Apache\bin>ab.exe -c 5 -n 10000 http://www.demo.com/optimization/index.php
- This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
- Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
- Licensed to The Apache Software Foundation, http://www.apache.org/
- Benchmarking www.demo.com (be patient)
- Completed 1000 requests
- Completed 2000 requests
- Completed 3000 requests
- Completed 4000 requests
- Completed 5000 requests
- Completed 6000 requests
- Completed 7000 requests
- Completed 8000 requests
- Completed 9000 requests
- Completed 10000 requests
- Finished 10000 requests
- Server Software: Apache/2.4.23
- Server Hostname: www.demo.com
- Server Port: 80
- Document Path: /optimization/index.php
- Document Length: 25 bytes
- Concurrency Level: 5
- Time taken for tests: 17.446 seconds
- Complete requests: 10000
- Failed requests: 0
- Total transferred: 2280000 bytes
- HTML transferred: 250000 bytes
- Requests per second: 573.20 [#/sec] (mean)
- Time per request: 8.723 [ms] (mean)
- Time per request: 1.745 [ms] (mean, across all concurrent requests)
- Transfer rate: 127.63 [Kbytes/sec] received
- Connection Times (ms)
- min mean[+/-sd] median max
- Connect: 0 0 0.4 0 2
- Processing: 2 8 90.4 4 2503
- Waiting: 1 7 90.5 3 2503
- Total: 2 8 90.4 4 2504
- Percentage of the requests served within a certain time (ms)
- 50% 4
- 66% 5
- 75% 5
- 80% 5
- 90% 5
- 95% 5
- 98% 6
- 99% 6
- 100% 2504 (longest request)
使用ab工具测试require_once,可以看到相应时间是8.723ms,该脚本每秒支持573.20个请求。
使用require导入外部文件:
index_1.php:
- <?php
- require './ClassA.php';
- require './ClassB.php';
- require './ClassC.php';
- require './ClassD.php';
- echo "Only testing require";
重启服务器,使用ab压力测试工具模拟10000个请求,同一时间有5个并发请求。
- ab.exe -c 5 -n 10000 http://www.demo.com/optimization/index_1.php
测试结果:
- D:\phpStudy\Apache\bin>ab.exe -c 5 -n 10000 http://www.demo.com/optimization/index_1.php
- This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
- Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
- Licensed to The Apache Software Foundation, http://www.apache.org/
- Benchmarking www.demo.com (be patient)
- Completed 1000 requests
- Completed 2000 requests
- Completed 3000 requests
- Completed 4000 requests
- Completed 5000 requests
- Completed 6000 requests
- Completed 7000 requests
- Completed 8000 requests
- Completed 9000 requests
- Completed 10000 requests
- Finished 10000 requests
- Server Software: Apache/2.4.23
- Server Hostname: www.demo.com
- Server Port: 80
- Document Path: /optimization/index_1.php
- Document Length: 20 bytes
- Concurrency Level: 5
- Time taken for tests: 17.207 seconds
- Complete requests: 10000
- Failed requests: 0
- Total transferred: 2230000 bytes
- HTML transferred: 200000 bytes
- Requests per second: 581.16 [#/sec] (mean)
- Time per request: 8.604 [ms] (mean)
- Time per request: 1.721 [ms] (mean, across all concurrent requests)
- Transfer rate: 126.56 [Kbytes/sec] received
- Connection Times (ms)
- min mean[+/-sd] median max
- Connect: 0 0 0.4 0 21
- Processing: 1 8 86.5 4 2320
- Waiting: 1 7 86.5 3 2320
- Total: 1 8 86.5 4 2320
- Percentage of the requests served within a certain time (ms)
- 50% 4
- 66% 5
- 75% 5
- 80% 5
- 90% 5
- 95% 6
- 98% 7
- 99% 7
- 100% 2320 (longest request)
- D:\phpStudy\Apache\bin>ab.exe -c 5 -n 10000 http://www.demo.com/optimization/index_1.php
- This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
- Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
- Licensed to The Apache Software Foundation, http://www.apache.org/
- Benchmarking www.demo.com (be patient)
- Completed 1000 requests
- Completed 2000 requests
- Completed 3000 requests
- Completed 4000 requests
- Completed 5000 requests
- Completed 6000 requests
- Completed 7000 requests
- Completed 8000 requests
- Completed 9000 requests
- Completed 10000 requests
- Finished 10000 requests
使用ab工具测试require,可以看到相应时间是8.604ms,该脚本每秒支持581.16个请求。
require和require_once经济性能对比的更多相关文章
- 记录:sea.js和require.js配置 与 性能对比
最近有点忙,很久无写博客,记录一下之前的配置require.js和sea.js的配置.(有误有望提出 require.js 文件目录 /app(项目使用js) /lib(require.js jq存放 ...
- PHP函数include include_once require和require_once的区别
了解下include.include_once.require和require_once这4个函数: include函数:会将指定的文件读入并且执行里面的程序: require函数:会将目标文件的内容 ...
- [原] KVM 环境下MySQL性能对比
KVM 环境下MySQL性能对比 标签(空格分隔): Cloud2.0 [TOC] 测试目的 对比MySQL在物理机和KVM环境下性能情况 压测标准 压测遵循单一变量原则,所有的对比都是只改变一个变量 ...
- 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)
如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...
- Java--Stream,NIO ByteBuffer,NIO MappedByteBuffer性能对比
目前Java中最IO有多种文件读取的方法,本文章对比Stream,NIO ByteBuffer,NIO MappedByteBuffer的性能,让我们知道到底怎么能写出性能高的文件读取代码. pack ...
- C正则库做DNS域名验证时的性能对比
C正则库做DNS域名验证时的性能对比 本文对C的正则库regex和pcre在做域名验证的场景下做评测. 验证DNS域名的正则表达式为: "^[0-9a-zA-Z_-]+(\\.[0-9a ...
- [转]require(),include(),require_once()和include_once()区别
require(),include(),require_once()和include_once()区别 面试中最容易提到的一个PHP的问题,我想和大家共勉一下: require()和include() ...
- 开发语言性能对比,C++、Java、Python、LUA、TCC
一直想做开发语言性能对比,刚好有时间都做了给大家参考一下, 编译类:C++和Java表现还不错 脚本类:TCC脚本动态运行C语言,性能比其他脚本快好多... 想玩TCC的同学下载测试包,TCC目录下修 ...
- php+mysql预查询prepare 与普通查询的性能对比
prepare可以解决大访问量的网站给数据库服务器所带来的负载和开销,本文章通过实例向大家介绍预查询prepare与普通查询的性能对比,需要的朋友可以参考一下. 实例代码如下: <?php cl ...
随机推荐
- js 代码优化 (写的可以)
Javascript是一门非常灵活的语言,我们可以随心所欲的书写各种风格的代码,不同风格的代码也必然也会导致执行效率的差异,开发过程中零零散散地接触到许多提高代码性能的方法,整理一下平时比较常见并且容 ...
- iOS -转载-开发之个人开发者账号转公司开发者账号
ps : 个人开发者账号升级公司开发者账号的话需要账号开启双重认证,没有开启的话需要开启(不然走到可以升级的那步的话,点击update升级会提示为了安全起见需要账号开启双双重认证,反正我走到upd ...
- Django实现组合搜索的方法示例
目录 一.实现方法 二.基本原理 三.代码样例 方法1:纯模板语言实现 方法二:使用simpletag实现 四.其他变化 1.model定义 2.处理函数变化 3.simpletag相应改变 一. ...
- 53、Gif 控件GifView 的使用,播放gif图片
GifView 是一个为了解决android中现在没有直接显示gif的view,只能通过mediaplay来显示这个问题的项目,其用法和 ImageView一样,支持gif图片.可监视GIF是否加载成 ...
- 红黑树C++实现
1 /* 2 * rbtree.h 3 * 1. 每个节点是红色或者黑色 4 * 2. 根节点是黑色 5 * 3. 每个叶子节点是黑色(该叶子节点就空的节点) 6 * 4. 如果一个节点是红色,则它的 ...
- hdu1066(经典题)
求N个数阶乘末尾除0后的数值. 主要的难点在于要把这个N个数所含的2和5的队数去掉. 网上方法很多很好. 不多说 Last non-zero Digit in N! Time Limit: 2000/ ...
- 【BZOJ1189】[HNOI2007]紧急疏散evacuate 动态加边网络流
[BZOJ1189][HNOI2007]紧急疏散evacuate Description 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一块空 ...
- 170228、Linux操作系统安装ELK stack日志管理系统--(1)Logstash和Filebeat的安装与使用
安装测试环境:Ubuntu 16.04.2 LTS 前言 (1)ELK是Elasticsearch,Logstash,Kibana 开源软件的集合,对外是作为一个日志管理系统的开源方案.它可以从任何来 ...
- 160801、BlockingQueue处理多线程
前面介绍过spring的taskExecutor,今天介绍一个jdk里处理多线程的方法 一.spring的配置文件(注入bean) <bean id="cmsClickButtonMn ...
- 160722、Javascript函数节流
最近在做网页的时候有个需求,就是浏览器窗口改变的时候需要改一些页面元素大小,于是乎很自然的想到了window的resize事件,于是乎我是这么写的 <!DOCTYPE html> < ...