我正在安卓平台上开发一个测试应用程序。测试SD卡的写入/读取速度。我用C语言编写,带有ndk接口。
首先,我编写一个for循环来创建256个文件,每个文件中有512个随机字节。这部分工作得很好。我打开带有标志o_creat_o_wronly_o_sync和模式0666的文件。在调用写入之后,我执行sync()以确保数据写入卡。
然后我再写一个2级for循环来读取这些文件以测试速度。我使用o_rdwr_o_sync打开文件。然后调用read()。
问题是:如果这是我第一次运行读部分的话。读取第一个循环比读取后要花更多的时间。我确信这是因为在第一次循环之后,程序读取缓存而不是真正的物理卡。
我试过直接读旗。但它与eival有错误。在打开的手册页中,它说可能是因为这个功能不是由平台实现的。
在安卓系统中,你知道如何在没有缓存的情况下阅读吗?
http://wiki.cyanogenmod.com/index.php?title=SDCardSpeedTests