国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHPWind與Discuz截取字符函數substrs與cutstr性能比較

PHPWind與Discuz截取字符函數substrs與cutstr性能比較

2019-12-18 17:21PHP教程網 PHP教程

PHP性能優化系列第四期實戰篇,如何使用PEAR Benchmark類工具獲取函數執行性能,這里以PHPWind與Discuz!兩個社區論壇的截取字符函數substrs與cutstr為例,分析兩個函數的執行性能情況

以掌握使用Benchmark_Iterate類工具的方法。 

目錄 
一,什么是PEAR與Benchmark 
二,性能比較代碼準備與調試 
三,性能比較測試結果 
四,性能比較測試總結 
五,附性能比較源代碼下載 

一,什么是PEAR與Benchmark 

請參考PHP性能優化系列 
第二期 PHP性能優化工具篇Benchmark類調試執行時間 
第一期 PHP性能優化準備篇圖解PEAR安裝 

二,性能比較代碼準備與調試 

測試環境說明 
操作系統:Windows xp Service Pack 3 
PHP版本:PHP Version 5.2.11 
Apache版本:Apache 2.0 Handler 

第一步,下載phpwind與discuz!程序源代碼 
1,下載 phpwind v7.5sp3 論壇版 安裝包:簡體 GBK 
2,下載 Discuz! 7.2_FULL(含UCenter) 簡體GBK 

第二步,分別獲取兩個程序的截取字符函數substrs()和cutstr(),其中PHPWind截取字符函數substrs()由兩個函數組成,分別是substrs與utf8_trim函數。 

復制代碼代碼如下:


function substrs($content,$length,$add='Y'){ 
if (strlen($content)>$length) { 
if ($GLOBALS['db_charset']!='utf-8') { 
$retstr = ''; 
for ($i=0;$i<$length-2;$i++) { 
$retstr .= ord($content[$i]) > 127 ? $content[$i].$content[++$i] : $content[$i]; 

return $retstr.($add=='Y' ? ' ..' : ''); 

return utf8_trim(substr($content,0,$length)).($add=='Y' ? ' ..' : ''); 

return $content; 

function utf8_trim($str) { 
$hex = ''; 
$len = strlen($str)-1; 
for ($i=$len;$i>=0;$i-=1) { 
$ch = ord($str[$i]); 
$hex .= " $ch"; 
if (($ch & 128)==0 || ($ch & 192)==192) { 
return substr($str,0,$i); 


return $str.$hex; 


function cutstr($string, $length, $dot = ' ...') { 
global $charset; 
if(strlen($string) <= $length) { 
return $string; 

$string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string); 
$strcut = ''; 
if(strtolower($charset) == 'utf-8') { 
$n = $tn = $noc = 0; 
while($n < strlen($string)) { 
$t = ord($string[$n]); 
if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { 
$tn = 1; $n++; $noc++; 
} elseif(194 <= $t && $t <= 223) { 
$tn = 2; $n += 2; $noc += 2; 
} elseif(224 <= $t && $t <= 239) { 
$tn = 3; $n += 3; $noc += 2; 
} elseif(240 <= $t && $t <= 247) { 
$tn = 4; $n += 4; $noc += 2; 
} elseif(248 <= $t && $t <= 251) { 
$tn = 5; $n += 5; $noc += 2; 
} elseif($t == 252 || $t == 253) { 
$tn = 6; $n += 6; $noc += 2; 
} else { 
$n++; 

if($noc >= $length) { 
break; 


if($noc > $length) { 
$n -= $tn; 

$strcut = substr($string, 0, $n); 
} else { 
for($i = 0; $i < $length; $i++) { 
$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; 


$strcut = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $strcut); 
return $strcut.$dot; 


第三步,編寫使用PEAR Benchmark_Iterate類調試的代碼 

復制代碼代碼如下:


<?php 
require_once "Benchmark/Iterate.php"; 
$bench = new Benchmark_Iterate; 
$charset = $GLOBALS['db_charset'] = 'gbk';//utf-8 
$content = "今年春晚,我特地關注了趙本山的新小品《捐助》,這篇小品對弱勢群體的不尊重并無改變,小品講的是趙本山與其弟子扮演兩個捐助者..."; 

/*phpwind*/ 
$bench->run(50,"substrs",$content,30); 
/*discuz*/ 
//$bench->run(50,"cutstr",$content,30); 

$result = $bench->get(); 
?> 


分別切換substrs和cutstr兩個函數并且調用50次獲取兩個函數執行的平均時間。 
三,性能比較測試結果

1,PHPWind程序substrs函數當截取字符編碼為GBK的情況
PHPWind與Discuz截取字符函數substrs與cutstr性能比較
圖解:PHPWind程序substrs函數截取GBK編碼的字符平均時間在0.0014s-0.0015s之間,縱坐標表示執行的時間,橫坐標表示執行的次數,圖表中mean表示平均執行時間,注s表示秒

2,Discuz!程序cutstr函數當截取字符編碼為GBK的情況
PHPWind與Discuz截取字符函數substrs與cutstr性能比較

圖解:Discuz!程序cutstr函數截取GBK編碼的字符平均時間在0.0016s-0.0018s之間

3,PHPWind程序substrs函數當截取字符編碼為UTF-8的情況
PHPWind與Discuz截取字符函數substrs與cutstr性能比較

圖解:PHPWind程序substrs函數截取UTF-8編碼的字符平均時間在0.001s-0.0012s之間

4,Discuz!程序cutstr函數當截取字符編碼為UTF-8的情況
PHPWind與Discuz截取字符函數substrs與cutstr性能比較
圖解:Discuz!程序cutstr函數截取UTF-8編碼的字符平均時間在0.0044s-0.0052s之間

四,性能比較測試總結

如上使用PEAR的Benchmark_Iterate類比較了兩個截取字符函數的執行性能,在實際的代碼開發過程中,為了保證代碼的效率與性能,我們可以采取同樣的方法來分析函數的執行性能或問題,這個非常有用!

本文通過比較PHPWind與Discuz兩個社區論壇產品的截取字符函數substrs與cutstr的執行性能情況為例,談談PEAR Benchmark_Iterate類在實際開發中的應用,請繼續關注下期的PHP性能優化系列。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品久久久久久久久久久 | 亚洲精品久久久久久久久久久 | 国产精品久久久久久吹潮 | 成人片网址| 午夜电影网站 | 免费一区二区 | 在线观看av大片 | 久久精品国产清自在天天线 | 88av网站 | 天天拍拍天天干 | 日韩a电影 | 欧美黄色网视频 | 亚洲一区中文字幕在线观看 | 麻豆国产一区二区三区 | 亚洲成人精品一区 | 日产精品一区二区三区在线观看 | 男女激情网站 | 婷婷成人av| 亚洲精品视频在线 | 国产高清视频一区二区 | 日韩欧美中文在线观看 | 欧美一级免费 | 一级黄色大片免费 | 国产成人精品一区二区三区四区 | 成人午夜影视 | 高清一区二区三区 | 亚洲精品久久久久久久久久久 | 精品无码久久久久国产 | 日韩一区二区三区在线观看 | 亚洲视频欧洲视频 | 美日韩成人 | 毛片在线视频 | 久久黄视频 | 国产中文视频 | 日韩中文一区二区三区 | 午夜小视频在线观看 | 日韩不卡一区二区三区 | 天天干夜夜操 | 久久香视频 | 欧美在线观看视频一区二区 | 欧美精品一区二区三区在线播放 |