您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)PHP如何將一個正整數(shù)擴(kuò)大一千倍的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
php是一個嵌套的縮寫名稱,是英文超級文本預(yù)處理語言,它的語法混合了C、Java、Perl以及php自創(chuàng)新的語法,主要用來做網(wǎng)站開發(fā),許多小型網(wǎng)站都用php開發(fā),因為php是開源的,從而使得php經(jīng)久不衰。
如何最高效率的將一個正整數(shù)擴(kuò)大一千倍?
當(dāng)這個問題被拋給人腦的時候,接受過優(yōu)秀的九年義務(wù)教育的我們稍加思索就能給出一個調(diào)皮而又不失大師風(fēng)范的答案:添三個零就行了~
但是當(dāng)這個問題交給程序員用代碼解決的時候,問題就要從編程的角度去考慮。我作為phper
第一時間想到的方案分別是
方案1:在數(shù)字末尾粘連字符串 “000”
方案2:將原數(shù)字簡單的乘以 1000
當(dāng)我把這個問題丟給我的朋友的時候,他告訴我:
方案1肯定不行!你應(yīng)該采用方案2,但是如果你足夠雞賊的話,你應(yīng)該采用正整數(shù) X 1024 - 正整數(shù) X 24
!
因為計算機(jī)是二進(jìn)制,當(dāng)你告訴他要乘以1000的時候,他會進(jìn)行正整數(shù) X 512 + 正整數(shù) X 256 + 正整數(shù) X 128 + 正整數(shù) X 128 + 正整數(shù) X 64 + 正整數(shù) X 32 + 正整數(shù) X 8
,一直累加到湊齊 正整數(shù)的 1000 倍 為止。而運算2的10次方
要比那一串加號更快接近結(jié)果。
大佬的這段話很快打動了我。為了踐行大佬的真知,證明大佬的闡述對我猶如醍醐灌頂般點醒夢中人,我迅速寫出了一小段方法,將一個隨機(jī)正整數(shù)擴(kuò)大1000倍的算法用三種不同的方法分別跑 一千萬次,查看各個方法運行的效率(使用框架:laravel)
// 圖表內(nèi)容 $headers = ['次數(shù)', '方案1:拼接法', '方案2:乘1000', '方案3:乘以 1024']; $data = [ [0=>'第一次'], [0=>'第二次'], [0=>'第三次'] ]; // 每個方法執(zhí)行三次 for ($count = 0; $count < 3; $count ++) { // 生成變量名 : plan1start1 $start = Carbon::now()->getPreciseTimestamp(); for ($i = 0; $i < 10000000; $i ++) { $integer = rand(1, 999); $result = (int)($integer . '000'); } $end = Carbon::now()->getPreciseTimestamp(); $data[$count][] = ($end - $start)/1000000 . '秒'; } for ($count = 0; $count < 3; $count ++) { $start = Carbon::now()->getPreciseTimestamp(); for ($i = 0; $i < 10000000; $i ++) { $integer = rand(1, 999); $result = $integer * 1000; } $end = Carbon::now()->getPreciseTimestamp(); $data[$count][] = ($end - $start)/1000000 . '秒'; } for ($count = 0; $count < 3; $count ++) { $start = Carbon::now()->getPreciseTimestamp(); for ($i = 0; $i < 10000000; $i ++) { $integer = rand(1, 999); $result = $integer * 1024 - $integer * 24; } $end = Carbon::now()->getPreciseTimestamp(); $data[$count][] = ($end - $start)/1000000 . '秒'; } $this->table($headers, $data);
將這段代碼運行多次后均得到一個較為穩(wěn)定的結(jié)果:
感謝各位的閱讀!關(guān)于“PHP如何將一個正整數(shù)擴(kuò)大一千倍”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。