榮登Github日榜!微信最新開源MMKV

2021-09-13 10:22:41 字數 1494 閱讀 4109

更詳細的設計原理參考 github wiki 文件。

• 多程序訪問

通過與 android 開發同學的溝通,了解到系統自帶的 sharedpreferences 對多程序的支援不好。現有基於 contentprovider 封裝的實現,雖然多程序是支援了,但是效能低下,經常導致 anr。考慮到 mmap 共享記憶體本質上的多程序共享的,我們在這個基礎上,深入挖掘了 android 系統的能力,提供了可能是業界最高效的多程序資料共享元件。具體實現原理可以前往 github 檢視原始碼和 wiki 文件。

• 匿名記憶體

在多程序共享的基礎上,考慮到某些敏感資料(例如密碼)需要程序間共享,但是不方便落地儲存到檔案上,直接用 mmap 不合適。我們了解到 android 系統提供了 ashmem 匿名共享記憶體的能力,發現它在程序退出後就會消失,不會落地到檔案上,非常適合這個場景。我們很愉快地提供了 ashmem mmkv 的功能。

mmkv效能

ios 效能對比

我們將 mmkv 和 nsuserdefaults 進行對比,重複讀寫操作 1w 次。相關測試**在 ios/mmkvdemo/mmkvdemo/,結果見如下圖表。

可見,mmkv 在寫入效能上遠遠超越 nsuserdefaults,在讀取效能上也有相近或超越的表現。

(測試機器是 iphone x 256 g,ios 12 beta 2,每組操作重複 1w 次,時間單位是 ms。)

android 效能對比

我們將 mmkv 和 sharedpreferences、sqlite 進行對比, 重複讀寫操作 1k 次。相關測試**在 android/mmkv/mmkvdemo/。結果如下圖表。

• 單程序效能

可見,mmkv 在寫入效能上遠遠超越 sharedpreferences & sqlite,在讀取效能上也有相近或超越的表現。

(測試機器是 pixel 2 xl 64g,android 8.1,每組操作重複 1k 次,時間單位是 ms。)

• 多程序效能

可見,mmkv 無論是在寫入效能還是在讀取效能,都遠遠超越 multiprocesssharedpreferences & sqlite & sqlite, mmkv 在 android 多程序 key-value 儲存元件上是不二之選。

(測試機器是 pixel 2 xl 64g,android 8.1,每組操作重複 1k 次,時間單位是 ms。)

歡迎 star、提 issue 和 pr!

榮登Github日榜!微信最新開源MMKV

更詳細的設計原理參考 github wiki 文件。多程序訪問 通過與 android 開發同學的溝通,了解到系統自帶的 sharedpreferences 對多程序的支援不好。現有基於 contentprovider 封裝的實現,雖然多程序是支援了,但是效能低下,經常導致 anr。考慮到 mmap...

微信小遊戲獲取排行榜

儲存每個使用者的分數 獲取好友列表,並獲取好友的分數 渲染排行榜 步驟一 獲取當前使用者託管資料當中對應 key 的資料。該介面只可在開放資料域下使用 wx.setusercloudstorage object 例如 儲存最高分 var score 100 var kvscore wx.setuse...

微信刪除的聊天記錄怎麼恢復?微信最簡單恢復方法!

微信刪除的聊天記錄怎麼恢復?和男 女票吵架把與其的聊天記錄刪了,第二天又後悔了怎麼辦?你有本事刪,你有本事別後悔啊!現代的人哪個不用微信呢?當兩個人不在一塊的時候全靠微信吊著一口仙氣了,如果刪除了聊天記錄就是一點xplvlody回憶都不剩下了 想知道微信刪除的聊天記錄怎麼恢復?那還不繼續看下去?不小...