如何在Android中读取无循环的文件?
-
11-10-2019 - |
题
我正在Android平台上进行测试应用程序。测试对SDCARD的写入/读取速度。我用NDK接口编写C语言。
首先,我编写了一个循环,以创建256个文件,每个文件中的每个文件中的512个随机字节。该部分正常工作。我使用flag o_creat | o_wronly | o_sync和模式0666打开文件。在呼叫写入后,我确实sync()确保数据写在卡上。
然后,我编写另一个2级前面的循环以读取这些文件以测试速度。我使用o_rdwr | O_Sync打开文件。然后致电read()。
这是事实:如果这是我第一次运行读取部分。第一个阅读的循环花费的时间比之后更多。我敢肯定是因为在第一个循环之后,程序读取缓存而不是真实的物理卡。
我已经尝试了o_direct标志来阅读。但是Einval的错误。在打开的“人”页面中,它说也许是因为这个功能未由平台实现。
您是否对如何在Android中使用无循环阅读有任何想法?
解决方案
您可能需要一部扎根的手机来禁用操作系统级缓存。
http://wiki.cyanogenmod.com/index.php?title=sdcardsPeedTests
这也要注意进行大型操作,以压倒任何卡上的缓冲区。
不隶属于 StackOverflow