$data = array(1, 2, 4, 3, 8, 7, 4, 5);"/>

激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - PHP 函數(shù)執(zhí)行效率的小比較

PHP 函數(shù)執(zhí)行效率的小比較

2019-11-11 12:57php教程網(wǎng) PHP教程

要求寫(xiě)一個(gè)自定義函數(shù),使 $data = array(12, 43, 87, 45) => $data = array(1, 2, 4, 3, 8, 7, 4, 5);

就是把原來(lái)的數(shù)組中的數(shù)都“拆”成“單”位的。 
下面是自己寫(xiě)的一個(gè)函數(shù): 

復(fù)制代碼代碼如下:


function splitStrToArray_mine($array) 

$new_array = array(); 
foreach($array as $value) 

$value = (string)$value; 
$len = strlen($value); 
for($i = 0; $i < $len; $i ++){ 
array_push($new_array, $value{$i}); 


return $new_array; 


測(cè)試了一下,還是可以執(zhí)行的,如下調(diào)用: 

復(fù)制代碼代碼如下:


//測(cè)試數(shù)組 
$data = array(12, 43, 87, 45, 98, 74, 83, 67, 12); 
var_dump(splitStrToArray_mine($data)); 


輸出結(jié)果為: 

復(fù)制代碼代碼如下:


array(18) { 
[0]=> 
string(1) "1" 
[1]=> 
string(1) "2" 
[2]=> 
string(1) "4" 
[3]=> 
string(1) "3" 
[4]=> 
string(1) "8" 
[5]=> 
string(1) "7" 
[6]=> 
string(1) "4" 
[7]=> 
string(1) "5" 
[8]=> 
string(1) "9" 
[9]=> 
string(1) "8" 
[10]=> 
string(1) "7" 
[11]=> 
string(1) "4" 
[12]=> 
string(1) "8" 
[13]=> 
string(1) "3" 
[14]=> 
string(1) "6" 
[15]=> 
string(1) "7" 
[16]=> 
string(1) "1" 
[17]=> 
string(1) "2" 


雖然執(zhí)行的不錯(cuò),但是看看標(biāo)準(zhǔn)答案就會(huì)讓你大吃一驚的,函數(shù)中就一句話,如下: 

復(fù)制代碼代碼如下:


//標(biāo)準(zhǔn)函數(shù) 
function splitStrToArray($array) 

return str_split(implode("", $array)); 


于是寫(xiě)了腳本來(lái)測(cè)試自己的和標(biāo)準(zhǔn)的函數(shù)的運(yùn)行效率差距,里面有一個(gè) microtime_float() 函數(shù)用來(lái)提供精確時(shí)間的支持: 

復(fù)制代碼代碼如下:


//測(cè)量時(shí)間的函數(shù) 
function microtime_float() 

list($usec, $sec) = explode(" ", microtime()); 
return ((float)$usec + (float)$sec); 

//自定義函數(shù) 
function splitStrToArray_mine($array) 

$new_array = array(); 
foreach($array as $value) 

$value = (string)$value; 
$len = strlen($value); 
for($i = 0; $i < $len; $i ++){ 
array_push($new_array, $value{$i}); 


return $new_array; 

//標(biāo)準(zhǔn)函數(shù) 
function splitStrToArray($array) 

return str_split(implode("", $array)); 

//測(cè)試數(shù)組 
$data = array(12, 43, 87, 45, 98, 74, 83, 67, 12); 
//開(kāi)始測(cè)試 
$mine_start = microtime_float(); 
splitStrToArray_mine($data); 
$mine_end = microtime_float(); 
//標(biāo)準(zhǔn)函數(shù)調(diào)用 
$sta_start = microtime_float(); 
splitStrToArray($data); 
$sta_end = microtime_float(); 
echo "自己的函數(shù)調(diào)用運(yùn)行時(shí)間為:" . (float)($mine_end - $mine_start) . " S <br />"; 
echo "標(biāo)準(zhǔn)的函數(shù)調(diào)用運(yùn)行時(shí)間為:" . (float)($sta_end - $sta_start) . " S <br />"; 
$multiple = (int)((float)($mine_end - $mine_start) / (float)($sta_end - $sta_start)); 
echo "前者是后者的:" . $multiple . " 倍!"; 


來(lái)看看輸出結(jié)果: 
自己的函數(shù)調(diào)用運(yùn)行時(shí)間為:9.3936920166E-005 S 
標(biāo)準(zhǔn)的函數(shù)調(diào)用運(yùn)行時(shí)間為:2.69412994385E-005 S 
前者是后者的:3 倍! 
多次刷新頁(yè)面的話,可以發(fā)現(xiàn)標(biāo)準(zhǔn)函數(shù)的執(zhí)行效率基本上是自己的函數(shù)的 3 倍!當(dāng)然,標(biāo)準(zhǔn)的函數(shù)中使用了 PHP 的內(nèi)置函數(shù): str_split(),implode(),所以要比自己寫(xiě)函數(shù)快得多,對(duì) str_split() 函數(shù)沒(méi)有印象?來(lái)看看手冊(cè)解釋?zhuān)?nbsp;
str_split -- Convert a string to an array(將一個(gè)字符串轉(zhuǎn)換成數(shù)組) 
函數(shù)描述: 
array str_split ( string string [, int split_length] ) 

復(fù)制代碼代碼如下:


Converts a string to an array. If the optional split_length parameter is specified, the returned array will be broken down into chunks with each being split_length in length, otherwise each chunk will be one character in length. 
FALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string, the entire string is returned as the first (and only) array element. 


例 1. Example uses of str_split() 

復(fù)制代碼代碼如下:


<?php 
$str = "Hello Friend"; 
$arr1 = str_split($str); 
$arr2 = str_split($str, 3); 
print_r($arr1); 
print_r($arr2); 
?> 


Output may look like: 

復(fù)制代碼代碼如下:


Array 

[0] => H 
[1] => e 
[2] => l 
[3] => l 
[4] => o 
[5] => 
[6] => F 
[7] => r 
[8] => i 
[9] => e 
[10] => n 
[11] => d 

Array 

[0] => Hel 
[1] => lo 
[2] => Fri 
[3] => end 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产激情视频在线 | 一级黄色大片在线观看 | 91精品国产91久久久久久不卞 | 91成人一区 | 免费看性xxx高清视频自由 | 欧美日韩免费看 | 色.com| 国产午夜三级一区二区三桃花影视 | 欧美成人理论片乱 | 久毛片 | 国产精品久久久久久久久久妇女 | 欧美性生活久久 | 快播av在线 | 久章草在线观看 | 国产毛片在线 | 午夜视频你懂的 | 污黄视频在线观看 | 免费观看视频91 | 色视频在线 | 日韩精品中文字幕在线观看 | 成人福利在线免费观看 | 亚洲午夜免费 | 国产午夜亚洲精品理论片大丰影院 | 中国漂亮护士一级a毛片 | 国产精品久久久久久久久久了 | 看国产毛片 | 久久精品视频69 | 久久综合一区二区 | 黄色欧美精品 | av在线免费看片 | 成人免费av在线播放 | 国内精品伊人久久久久网站 | 中文字幕激情 | 久草成人在线观看 | 97porn| 欧美扩阴视频 | 欧美日韩国产中文字幕 | 国产高潮好爽好大受不了了 | 91精品国产91久久久 | 久久精品视频免费 | 午夜视频在线观看免费视频 |