【发布时间】:2012-03-02 02:29:18
【问题描述】:
全部
当我第一次插入设备后尝试从sd卡读取一些媒体文件时,读取性能比第二次差很多,有没有人知道这种现象,我该如何避免这种情况问题,我试过open和fopen,结果是一样的,我只想读性能一样,不管什么时候插入SD卡,谢谢
【问题讨论】:
标签: android linux performance file-io
全部
当我第一次插入设备后尝试从sd卡读取一些媒体文件时,读取性能比第二次差很多,有没有人知道这种现象,我该如何避免这种情况问题,我试过open和fopen,结果是一样的,我只想读性能一样,不管什么时候插入SD卡,谢谢
【问题讨论】:
标签: android linux performance file-io
在打开文件时使用O_DIRECT(参见open(2))将绕过缓冲区缓存。这通常不是一个好主意,但我希望它在每次运行中更加一致。
请记住,使用O_DIRECT 要求读入的内存与SC_PAGESIZE 对齐并以SC_PAGESIZE 的倍数的块读取。
【讨论】:
O_DIRECT 不一定有助于提高性能。但是您问“我只想读取性能相同,无论何时插入 SD 卡。” O_DIRECT 可能会解决这个问题。您的问题没有解决方案,因为您希望能够从具有硬件吞吐量限制的介质中读取数据。尝试更改硬件(介质和读卡器),我希望性能会有所提高(尽管它可能永远不会接近内存缓存性能)。数码摄影也有类似的问题,请向那些供应商寻求设备。
您是说第一次读取比移除设备之前的后续读取更糟糕吗?如果是这样,这是正常的 - 这是由于缓冲。基本上,系统正在使用系统 RAM 来加快设备的感知速度。
如果您在卸载卡后取出卡,然后将其放回并重新安装,我预计第一次读取会再次变慢,然后后续读取会再次变得更快。
【讨论】: