大小pos機(jī)區(qū)分,200W手機(jī)號碼中查找特定號碼

 新聞資訊2  |   2023-06-26 09:17  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于大小pos機(jī)區(qū)分,200W手機(jī)號碼中查找特定號碼的知識,也有很多人為大家解答關(guān)于大小pos機(jī)區(qū)分的問題,今天pos機(jī)之家(m.dsth100338.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、大小pos機(jī)區(qū)分

大小pos機(jī)區(qū)分

之前寫了一個(gè)100W條記錄中查找特定數(shù)據(jù)的性能測試,和遍歷算法做了比較,二分法性能強(qiáng)很多.

今天我用二分法和bitmap數(shù)據(jù)結(jié)構(gòu)存儲來比較下:

場景一:

200W條手機(jī)號碼記錄中查找特定手機(jī)號碼的記錄需要花費(fèi)的時(shí)間:

可以看到查找手機(jī)號碼: 19998600000,兩種算法所用的時(shí)間差距還是比較明顯的,

bitmap強(qiáng)于二分法,效率大概是7倍,效果也比較明顯,bitmap屬于使用空間換時(shí)間,因此bitmap所要占用的內(nèi)存空間會更大,需要事先根據(jù)數(shù)據(jù)量和存儲的數(shù)據(jù)大小來申請存儲空間,對于兩種算法的取舍還是要基于當(dāng)前的業(yè)務(wù)場景

大家如果有更好的想法,歡迎交流學(xué)習(xí)!!!!!

下面就是go實(shí)現(xiàn)的bitmap算法的主要代碼:

type BitMap []byte

func NewBitMap(max int) BitMap {

return make([]byte, (max>>3)+1)

}

func (b BitMap) Set(n uint) {

if (n >> 3) > uint(len(b)) {

fmt.Println("數(shù)字太大超過最大存放范圍")

return

}

index := n >> 3

pos := n & 0x07

b[index] = b[index] | 1<<pos

}

func (b BitMap) Get(n uint) bool {

if (n >> 3) > uint(len(b)) {

fmt.Println("數(shù)字太大超過最大存放范圍")

return false

}

index := n >> 3

pos := n & 0x07

return b[index]&(1<<pos) != 0

}

以上就是關(guān)于大小pos機(jī)區(qū)分,200W手機(jī)號碼中查找特定號碼的知識,后面我們會繼續(xù)為大家整理關(guān)于大小pos機(jī)區(qū)分的知識,希望能夠幫助到大家!

轉(zhuǎn)發(fā)請帶上網(wǎng)址:http://m.dsth100338.com/newsone/73960.html

你可能會喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。