多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > php教程 > PHP開發(fā)經(jīng)驗:引用是個壞習慣

PHP開發(fā)經(jīng)驗:引用是個壞習慣

來源:程序員人生   發(fā)布時間:2014-04-14 17:09:24 閱讀次數(shù):3549次

在寫PHP 程序的時候,很多人在傳遞參數(shù)的時候,喜歡用一個引用。特別是在一個數(shù)組非常的大的時候,更是喜歡加。

function binsearch(&$arr, $key, $value)
{
$low = 0;
$high = count($arr);

while ($low <= $high) {
$mid = floor($low + ($high - $low) / 2);
$item = $arr[$mid][$key];
if ($item == $value) {
return $mid;
} else if ($value > $item) {
$low = $mid + 1;
} else {
$high = $mid - 1;
}
}
return false;
}

在這里,$mid 采用了先減后加的方法計算,目的是為了防止整數(shù)的溢出。不是故意寫復雜了。

我用下面的代碼進行測試:

$data = array();
for ($i = 0; $i < 1000000; $i++)
{
$data[] = array("sq" => $i * 2);
}
var_dump(binsearch($data, "sq", 10000));

發(fā)現(xiàn),binsearch 的時候,總是要花個 0.2s左右。理論上來說,100萬的數(shù)據(jù),最多也就是循環(huán)20次。怎么會這樣慢呢。

后來監(jiān)控了一下內(nèi)存,data 數(shù)組 占用了 230M 的內(nèi)存。而 binsearch 的時候,占用了60K 的內(nèi)存。但是,理論上來說,binsearch

不應該占用如此多的內(nèi)存。因為,我覺得,我已經(jīng)用引用了,根本就沒有對data 的結(jié)構(gòu)進行修改。

我也是百思不得其解,后來,我把引用參數(shù)去掉,居然 binsearch 只要 0.0002s ,看來是引用耗費了大量的cpu 資源。

PHP 內(nèi)部遵循一個copy on write 的原則。實際上這個引用是多余的。

但是為什么,加了引用速度會變慢呢?今天重點就談談這個問題。明白道理后,大家一定知道怎么用引用了。

如果在binsearch 調(diào)用前,直接 $a = &$data,這個引用的速度會非常的快。看來肯定不是引用本身產(chǎn)生的問題。

這個問題,實際上涉及了zend 引擎如何管理PHP變量。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲理论a中文字幕在线 | 久草干| 激情久久免费视频 | 性欧美高清video | 夜趣第一宅男福社区国产 | 天天综合久久 | 欧美另类视频一区二区三区 | 伊人免费在线观看 | 久草午夜 | 偷拍自拍校园春色 | 国产精品欧美一区二区三区不卡 | 尤物视频在线播放 | 亚洲精品国产一区二区 | 欧美成人综合在线观看视频 | 国产麻豆剧看黄在线观看 | 精品国产一区二区三区www | 欧美多人性受xxxx喷水 | 99国产精品农村一级毛片 | 国内精品视频在线播放一区 | 国产日韩高清一区二区三区 | 日韩欧美亚洲视频 | 午夜爱爱网站 | 国产一区二区精品久久 | 国产视频一二三区 | 国产高清一 | 国产精品页 | 亚洲人成在线播放网站 | 国产一区二区三区高清视频 | 国产成人综合一区人人 | 全网毛片| 激情视频网址 | 影音先锋色天使 | 欧美videos另类极品 | www日本视频 | 三级不卡视频 | 欧美xxxx日本 | 天天成人综合网 | 国产一区二区三区日韩 | 国产福利视频一区二区 | 性欧美17一18sex性高清 | 毛片精品 |