GO map -1
GO 相關文章
github GO 程式
緣由: AIoT 討論
在想寫底層程式的人,是不是不習慣用 hash, key->value 找尋是用迴圈一個個查表比對key 欄位⋯
O(1) vs O(n) ,
大家有沒有什麼看法?
--
先用 GO 在 一般 PC 上跑,
假設 table 有 key 和 value 兩個欄位.
1. 用一般 search 方式
(1) init
這邊 key 值用公式計算只是方便寫驗證程式, 實際 key 值和 index 是無關係的.
(2) find out value
(3) test1
2. 用 map 方式
(1) init
(2) find val by map
(3) test 2
3. time measurement
4. 結果
(1) 當 table 大小為 10 筆時, 抓第五筆, 兩個差不多
(在這狀況下, Hash 值計算處理時間, 剛好 和 loop 迴圈逐一檢查五筆的時間應該是差不多的)
(2) 當 table 大小為 90 時, 效能 map 方式可以比 逐一 search 快三倍
github GO 程式
緣由: AIoT 討論
在想寫底層程式的人,是不是不習慣用 hash, key->value 找尋是用迴圈一個個查表比對key 欄位⋯
O(1) vs O(n) ,
大家有沒有什麼看法?
--
先用 GO 在 一般 PC 上跑,
假設 table 有 key 和 value 兩個欄位.
1. 用一般 search 方式
(1) init
這邊 key 值用公式計算只是方便寫驗證程式, 實際 key 值和 index 是無關係的.
(2) find out value
(3) test1
2. 用 map 方式
(1) init
(2) find val by map
(3) test 2
3. time measurement
4. 結果
(1) 當 table 大小為 10 筆時, 抓第五筆, 兩個差不多
(在這狀況下, Hash 值計算處理時間, 剛好 和 loop 迴圈逐一檢查五筆的時間應該是差不多的)
(2) 當 table 大小為 90 時, 效能 map 方式可以比 逐一 search 快三倍
Find val - 1090 | |
8.895157ms | |
Find val - 1090 | |
1.28293ms |
下回進一步深入分析 GO 是如何用 hash 來實現 map
留言
張貼留言