PHPWind和Discuz截取字符函数substrs和cutstr性能比较
掌握用benchmark_iterate类工具的方法。目录
一、什么是梨和基准
二、性能比较代码编写与调试
三、性能比较测试结果
四,绩效比较测试综述
五,附性能比较源码下载
一、什么是梨和基准
请参考PHP性能优化系列。
第二阶段PHP性能优化工具基准类调试执行时间
PHP性能优化文章的第一阶段,说明梨安装
二、性能比较代码编写与调试
测试环境描述
操作系统:Windows XP服务包3
PHP版本:PHP版本5.2.11
Apache版本:Apache 2处理程序
第一步,下载phpwind和Discuz!程序源代码
1、下载phpwind v7.5sp3论坛版安装包:简体GBK
2、Download Discuz!7.2_full(UCenter)简单的GBK
第二步得到截取字符功能substrs()和()cutstr分别为两个节目,PHPWind截取字符功能substrs(),它是由两个功能,substrs和utf8_trim函数。
复制代码代码如下所示:
功能substrs(美元美元美元的内容、长度、增加= Y){
如果(strlen($content)> $长度){
如果美元'db_charset'} {(全局变量!= 'utf-8){
retstr美元=;
为($我= 0;美元美元美元我<<邻接;i++){
retstr美元= ORD($内容{我})> 127美元美元美元内容{我},{我}内容+美元美元美元内容:{我};
}
返回的retstr。($加= = Y:'''。);
}
返回utf8_trim(substr($ 0美元的内容,长度)。($加= = Y)':'。);
}
返回$内容;
}
功能utf8_trim($str){
十六进制=;
$ len = strlen(str)- 1;
为($ i = =;$ i = 0;$ i = 1){
$ CH = ORD($str {我});
美元= $ ;
如果(($ CH 128)= = 0 | |($ CH 192)= = 192){
返回substr($str,0,我);
}
}
返回str六美元;
}
功能cutstr(美元美元美元的字符串,长度,点= '…)){
全球$字符集;
If (strlen ($string) < = $length) {
返回$字符串;
}
$字符串str_replace(array(' ',' ',' '),阵列(' ',' ',' '),为字符串);
strcut美元=;
如果(strtolower($字符集)= = 'utf-8){
$ = $ = $ $ NOC = 0;
而($ n<strlen($字符串)){
$ T = ORD($字符串{ $ n });
如果($ T = = 9 = = 10 $ T | | | |(32 < = $ T $ T <= 126)){
美元= 1美元;
} elseif(194 < = $ T $ T <= 223){
$ = 2;$ = 2;$ NOC = 2;
} elseif(224 < = $ T $ T <= 239){
$ = 3;$ = 3;$ NOC = 2;
} elseif(240 < = $ T $ T <= 247){
$ = 4;$ = 4;$ NOC = 2;
} elseif(248 < = $ T $ T <= 251){
$ = 5;$ = 5;$ NOC = 2;
($ T = = 252 | | } { $ T = = 253)
$ = 6;$ = 6;$ NOC = 2;
{人}
美元+;
}
如果($ NOC = $长度){
打破;
}
}
如果($ $ $长度){
美元=美元;
}
strcut美元= substr($ 0,$字符串,n);
{人}
($ i = 0;$ i $ $长度;$ + +){
strcut美元= ORD($字符串{我})> 127美元美元美元字符串{我},{ C++字符串我}:美元美元美元字符串{我};
}
}
strcut美元= str_replace(array(' ',' ',' '),阵列(' ',' ',' '),strcut美元);
返回的strcut美元点;
}
在第三步中,编写使用梨benchmark_iterate类的代码调试
复制代码代码如下所示:
< PHP
require_once 基准/迭代。PHP ;
板凳=新benchmark_iterate美元;
字符集= = { 'db_charset美元美元的} = 'gbk '; / / UTF-8
春节联欢晚会
/ * * / PHPWind
$台->运行(50,substrs
/ * * / Discuz
/ / $台->运行(50,cutstr
$结果;
>
开关substrs和cutstr,两个函数分别调用50次平均时间得到两功能。
三、性能比较测试结果
1,汉字的编码是GBK拦截时substrs phpwind程序功能
插图:phpwind程序substrs函数拦截GBK编码的字符,平均时间是0.0014s-0.0015s之间,纵坐标表示的执行时间,横坐标表示执行数,图中的意思表示的平均执行时间,并指示秒。
2、Discuz!字符编码的拦截时cutstr GBK程序功能
图解:Discuz!程序cutstr功能拦截的时间平均在0.0016s-0.0018s GBK编码字符
3、phpwind程序substrs功能时的字符编码是UTF-8的拦截
插图:phpwind程序substrs功能拦截的时间平均字符之间的0.001s-0.0012s UTF-8编码
4、Discuz!程序cutstr功能时,字符编码是UTF-8的拦截
图解:Discuz!程序cutstr功能拦截的时间平均字符的UTF-8编码之间的0.0044s-0.0052s
四,绩效比较测试综述
作为梨用benchmark_iterate比较两截留特征函数的性能,在实际开发过程中的代码,为了保证代码的性能和效率,我们可以采取对绩效问题的功能的分析类似的方法,这是非常有用的!
比较PHPWind和Discuz之间通过两社区论坛产品截取字符功能substrs和cutstr为例,梨benchmark_iterate在实际开发中的应用,请继续关注PHP系列的性能优化。