目录:
-
为什么使用MMKV,而不是用SP,SP的缺点
1.1 对比MMKV、SP写入数据的速度
1.2 我们可以看看SP的源码,存储大量数据的时候,他的问题在哪里
-
MMKV是什么,MMKV为什么性能更高
2.1. 高效的文件操作:FileChannel
2.2. 更精简的数据格式:二进制
2.3. 数据更新方式:增量写入
一、为什么使用MMKV,而不是用SP
在很久以前,我们都是使用SP来存储轻量级数据的,但不同的程序员对他的理解不同,会导致滥用以及错误的使用,使其存储了很多数据,从而引出了问题,如:
-
性能瓶颈:SP 使用 XML 格式,读写时需全量解析,数据量大时效率骤降。
-
ANR 风险:
commit()同步写入可能阻塞主线程,apply()虽是异步但仍有潜在 ANR。 -
数据冗余:每次更新需全量写入文件,导致 I/O 开销大。
1.1 对比MMKV、SP写入数据的速度
private lateinit var mmkv: MMKV
private lateinit var sp: SharedPreferences
private val testCount = 1000 // 测试次数(可根据需要调整)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 初始化 MMKV
MMKV.initialize(this)
mmkv = MMKV.defaultMMKV()
// 初始化 SP
sp = getSharedPreferences("benchmark_sp", Context.MODE_PRIVATE)
// 执行测试
testMMKVPerformance()
testSPPerformance()
}
/** MMKV 存储性能测试 */
private fun testMMKVPerformance() {
val startTime = System.nanoTime()
for (i

3869

被折叠的 条评论
为什么被折叠?



