橘本橘橘猫 2023-01-27 16:19 采纳率: 25%
浏览 71
已结题

AndroidBench&eMMC内存测试速度&Android

问题:
手机eMMC内存,我用Android Bench/安兔兔/鲁大师测出来的速度很快,而自己写Android Tool测试的速度确很慢,这是为什么呢?

主要信息:

  1. 同样是Sequence Write操作,Android Bench测出来的速度为150MB/S,而我的Tool最高只能跑130MB/S,
  2. 我的Tool采用的是Direct IO的方式去写入数据,修改的是Android Native层部分
    3)在抓取的eMMC指令中,AndroidBench的CMD13几乎不花费时间,而我的Tool每次都会花费大概2ms左右
    如下图:图一为Android Bench的Write操作

    img


    图二为我写的Tool的Write操作,两者时间差异在CMD13消耗的时间上

    img

我的IO方式(Android Native层),C代码:

      1)申请内存                            --  只申请一次
            requestSpace = posix_memalign((void**)&jbArray,4096,jbArraySize);//Size为1024*1024 = 1MB
      2)创建文件,获取对应句柄   --  只调用一次
            fileHandle = open(filePath, O_WRONLY | O_CREAT | O_NOCTTY | O_DIRECT | O_APPEND |O_TRUNC, S_IRUSR | S_IWUSR);   
      3)写入数据                            --  循环调用512次,写入51MB数据,只会记录该循环写入的时间
            for(int i = 0; i<512; i++)
            {
                writeLength = write(fileHandle,jbArray,length);   //length长度为1024*1024 = 1MB,单次Write1MB
            }
  

结果:
我的Tool执行时间 计算出来的速度 比AndroidBench计算出来的速度慢,使用UFS内存的设备上差距更加明显

尝试过的方法:
1) IO方式中,试过mmap和Java IO的方式,都比Direct IO慢
2)修改过单次写入的数据大小,1MB和4KB没有什么差距,4KB速度反而稍慢

我想要的结果:
我想知道为什么会造成这种速度差异,我该如何修改,我目前只能做Native层的优化,希望能有巨佬帮忙解惑,非常感谢

  • 写回答

6条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 2月4日
      • 创建了问题 1月27日

      悬赏问题

      • ¥50 需要加权最小二乘Python代码
      • ¥15 hanzi-writer生成的svg外有一层div,修改div宽高影响的是画布大小,字体在不同视口下完全不相同。我想要让字体跟画布同比例大小该怎么实现?
      • ¥15 Java集合多对一问题集
      • ¥20 PowerShell如何操作记事本?
      • ¥15 intel网卡固件降级失败
      • ¥20 html使用模型的问题
      • ¥15 这些怎么解题啊来个人
      • ¥15 h5套壳IOS Cordova依赖找不到导致编译失败
      • ¥15 分组密码算法misty1的子密钥生成算法c++实现
      • ¥15 vscode的一些报错,希望可以得到解决