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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

Go
交互式愛情 2023-01-03 10:12:30
我有一個包含大約 3000 個 bson 對象的切片。每個對象都有一些嵌套映射,一個對象的平均大小為4 kb. 在我的代碼中,我必須能夠uid盡可能快地根據(jù)它們的字段檢索這些對象。我最初的計劃是編寫一個函數(shù)來簡單地循環(huán)遍歷原始切片并檢查匹配,uid例如object["uid"] == uidToFind. 但是現(xiàn)在我相信最好創(chuàng)建一個大映射,其中鍵使用uid字段而值使用相應(yīng)的對象,就像這樣: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ù)百萬個對象,因此我認為將重要內(nèi)容保存在一個全局可用的映射中并簡單地訪問它們m["sample_UID"]而不是總是遍歷整個切片是一個更好的主意。
查看完整描述

1 回答

?
心有法竹

TA貢獻1866條經(jīng)驗 獲得超5個贊

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

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

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


查看完整回答
反對 回復(fù) 2023-01-03
  • 1 回答
  • 0 關(guān)注
  • 88 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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