美文网首页
MMKV vs DataStore vs Sp

MMKV vs DataStore vs Sp

作者: crush_d872 | 来源:发表于2022-03-31 11:02 被阅读0次
image.png

MMKV:主要是效率,比Sp效率高
DataStore:主要是稳定性

Sp原理分析

数据格式:XML格式保存
初始化:子线程使用IO读取整个文件,进行XML解析,存入内存Map集合
保存:commit同步提交,阻塞主线程;apply异步提交 ,无法获取结果且可能数据丢失
更新:把Map中的数据,全部序列化为XML,覆盖文件保存即全量更新

优化方向:
比XML更精简的数据格式
更高效的文件处理
更优的数据更新方式即局部更新

MMKV

基于mmap

传统I/O

虚拟内存被操作系统划分为两块:用户空间和内核空间,用户空间是用户程序代码运行的地方,内核空间是代码运行的地方,内核空间由所有进程共享。为了安全,它们是隔离的,即使用户的程序崩溃了,内核也不受影响

写文件流程:
1、调用write向内核发起系统调用,上下文从用户态切换为内核态
2、CPU将用户缓冲区中的数据拷贝到内核空间的缓冲区(CPU拷贝)
3、CPU利用DMA控制器将数据从内核缓冲区拷贝到磁盘缓冲区进行数据传输(DMA拷贝)Direct memory access
4、上下文从内核态切换回用户态,write系统调用执行返回

MMAP

Linux通过将一个虚拟内存区域与一个磁盘上的对象关联起来,以初始化这个虚拟内存区域的内容,这个过程称为内存映射(memory mapping)
数据直接拷贝到用户空间的映射区域


image.png

对文件进行mmap,会在进程的虚拟内存分配地址空间创建映射关系

实现这样的映射关系后,就可以采用指针的方式读写操作这一段内存,而系统会自动回写到对应的文件磁盘上

MMAP优势

MMAP对文件的读写操作只需要从磁盘到用户主存的一次数据拷贝过程,减少了数据的拷贝次数,提高了文件操作效率
MMAP使用逻辑内存对磁盘文件进行映射,操作内存就相当于操作文件,不需要开启线程,操作MMAP的速度和操作内存的速度一样快
MMAP提供一段可供随时写入的内存块,APP只管往里面写数据,由于操作系统如内存不足、进程退出等时候负责将内存回写到文件

相关文章

  • MMKV vs DataStore vs Sp

    MMKV:主要是效率,比Sp效率高DataStore:主要是稳定性 Sp原理分析 数据格式:XML格式保存初始化:...

  • mybatis

    mybatis是一款基于jdbc的数据库访问框架。 jdbc vs hibernate vs jdbi vs Sp...

  • SharedPreferences VS MMKV

    SharedPreferences 作为轻量级存储在 Android 应用中是必不可少的,但依旧存在较大的优化空间...

  • SharedPreferences、MMKV、DataStore

    一、MMKV的起源: 微信为了能找到导致崩溃的这些特殊字符,必须要在崩溃之前保存用户发送的文本,找到哪些特殊字符导...

  • 【五行论水】

    壬vs癸阳vs阴动vs静白vs黑勇vs谋狂vs逸涛vs渗敏vs睿急vs缓响vs寂奔vs驻吐vs纳 。。。。。。 水...

  • 【土为何物】

    戊vs己阳vs阴厚vs薄重vs轻凸vs平实vs虚深vs浅伟vs卑藏vs盖信vs疑稳vs浮强vs弱 土代表环境环境寓...

  • 【五行论木】

    甲vs乙 阳vs阴 直vs曲 纵vs横 高vs宽 挺vs垂 衝vs铺 优vs良 通vs达 干vs枝 上vs下 粗v...

  • 【五行论火】

    丙vs丁 阳vs阴 散vs聚 泛vs专 远vs近 猛vs文 爆vs缩 快vs慢 扩vs定 周vs点 外vs里 宏v...

  • 【五行论金】

    庚vs辛 阳vs阴 刚vs柔 锋vs锐 劈vs戳 悍vs险 确vs准 决vs绝 边vs端 理vs据 冷vs润 攻v...

  • 开始尝试在 Win7 下使用 OpenMP 编写 fortran

    备忘: 使用 VS2013 + IVF2013 SP1 update1 / gfortran 4.9.2 没有专门...

网友评论

      本文标题:MMKV vs DataStore vs Sp

      本文链接:https://www.haomeiwen.com/subject/wxgijrtx.html