第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

循環(huán)切片或使用映射更好地檢索對(duì)象

循環(huán)切片或使用映射更好地檢索對(duì)象

Go
交互式愛情 2023-01-03 10:12:30
我有一個(gè)包含大約 3000 個(gè) bson 對(duì)象的切片。每個(gè)對(duì)象都有一些嵌套映射,一個(gè)對(duì)象的平均大小為4 kb. 在我的代碼中,我必須能夠uid盡可能快地根據(jù)它們的字段檢索這些對(duì)象。我最初的計(jì)劃是編寫一個(gè)函數(shù)來簡(jiǎn)單地循環(huán)遍歷原始切片并檢查匹配,uid例如object["uid"] == uidToFind. 但是現(xiàn)在我相信最好創(chuàng)建一個(gè)大映射,其中鍵使用uid字段而值使用相應(yīng)的對(duì)象,就像這樣:m := make(map[string]bson.M) m["sample_UID_0"] = bsonObjects[0] m["sample_UID_1"] = bsonObjects[1] //... continue with the remaining 3000 objects...我的問題是,我是否應(yīng)該支持這種解決方案而不是每次都循環(huán)遍歷原始切片?由于我沒有數(shù)百萬個(gè)對(duì)象,因此我認(rèn)為將重要內(nèi)容保存在一個(gè)全局可用的映射中并簡(jiǎn)單地訪問它們m["sample_UID"]而不是總是遍歷整個(gè)切片是一個(gè)更好的主意。
查看完整描述

1 回答

?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊

除了性能和內(nèi)存使用之外,這兩種解決方案之間還有一個(gè)主要區(qū)別,您的地圖定義方式只能包含一個(gè)具有相同 ID 的條目。沒有什么能阻止你的數(shù)組中有多次相同的 id。

通常,如果您的數(shù)組已排序,您可以使用二分法搜索,這與地圖中的搜索不會(huì)產(chǎn)生任何明顯的差異,但您必須在添加新條目時(shí)保持?jǐn)?shù)組排序。所以這個(gè)解決方案的好處取決于你的陣列是否經(jīng)常被修改。數(shù)組應(yīng)該比映射使用更少的內(nèi)存。

在您的具體示例中,3000 個(gè)條目并不多。根據(jù)在數(shù)據(jù)結(jié)構(gòu)中搜索的頻率,您可能不會(huì)明顯注意到性能方面的任何差異。您可能想使用基準(zhǔn)測(cè)試來檢查。


查看完整回答
反對(duì) 回復(fù) 2023-01-03
  • 1 回答
  • 0 關(guān)注
  • 99 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)