首页 > 系统相关 >AndroidBench&eMMC内存测试速度&Android

AndroidBench&eMMC内存测试速度&Android

时间:2023-01-27 17:22:19浏览次数:34  
标签:eMMC Tool 写入 AndroidBench IO 速度 Android

提问:

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

主要信息:

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

 

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

 

 我的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层的优化。

解答:

 对于这个问题,你可以尝试一些优化:

1.使用预先缓存的数据进行写入,这可以提高写入速度。

2.使用更快的eMMC驱动,这可以提高读写速度。

3.使用其他的缓存技术,例如mmap,来提高读写速度。

4.使用用户空间的缓存来提高读写速度。

5.在底层优化写入的硬件驱动。

标签:eMMC,Tool,写入,AndroidBench,IO,速度,Android
From: https://www.cnblogs.com/dituirenwu/p/17069078.html

相关文章

  • Could not locate aapt. Please ensure you have the Android buildtools installed.E
    Flutter开发调试一直报错Couldnotlocateaapt.PleaseensureyouhavetheAndroidbuildtoolsinstalled.Exception:ProblembuildingAndroidapplication:seeab......
  • Android2.2 开发环境搭建
    Android2.2开发环境搭建cheungmine2010-11-28深夜昨天到不夜城买了一个HTCG7Android手机。周六的时候,人却很少。火车站对面梅园路口那个金色的大厦就是。买的当然是水的,......
  • Android Files.delete()使用try-catch依旧出错
    提问: 我想做一个供自己使用的文件编辑器,其中有一个删除指定文件的功能(第105行开始):  我使用了catch语句抓住错误,可是当找不到指定文件时仍旧闪退。具体详情:  ......
  • Android View VISIBLE,INVISIBLE和GONE的区别
    AndroidViewVISIBLE,INVISIBLE和GONE的区别首先整理一下View的三种显示的形式,VISIBLE,INVISIBLE和GONE。/***Thisviewisvisible.*Usewith{@link......
  • Android高级控件之下拉框和几种适配器
    7.1下拉框首先介绍下拉框在xml文件中的两种表达形式,再介绍在代码中的两种写法在xml文件中,下拉框控件Spinner的写法如下所示:<Spinner android:id="@id/sp_XXX"  ......
  • Android时间与服务器同步方案
    前言在部分场景里,应用对时间的要求比较严苛,比如金融类app,股票类、期货等,对交易区间的判断是非常重要的。这就需要客户端的时间与服务器时间或者是世界标准时间同步,而不能简......
  • Android项目国际化(本地化,全球化,多语言)
    目标在Android项目中实现国际化,支持多种语言。开发工具下载AndroidStudio打开strings文件添加其他语言修改内容关闭“TranslationsEditor”,重新点击strings.xml......
  • Android SDK与API版本的对应关系
    看教程、开发Android程序等很多地方,需要设置AndroidSDK的版本,而其要我们写的却是API版本的数字,为了方便查看AndroidSDK与API版本的对应关系我在SDKManager.exe中截了张......
  • 给Android SDK设置环境变量
    Android官方在介绍如何安装AndroidSDK时,有这样一句话:Tip:ForeasyaccesstotheSDKtoolsfromacommandline,addthelocationoftheSDK'stools/andplatform......
  • QVGA/HVGA/WVGA/FWVGA分辨率屏含义及大小//Android虚拟机分辨率
    在Eclipse中创建Android虚拟机时,我很想知道每一种虚拟机的屏幕大小是多少,于是在网上查了一下,记录如下:QVGA格式:240*320分辨率版本:一般用于小屏手机像三星盖世MiniS5570就......