2012-11-08 60 views
0

我建立的Android设备和SD卡之间的标杆项目跟踪不同类型的SD卡之间的性能变化。如何在I/O操作后删除系统内部缓冲区的缓存?

在我的基准我使用许多IO方法,以及SD卡的逻辑和物理访问。 有时我控制内部缓冲区的大小(与setnvbuf()

每个文件之间读/写我想清除系统的缓存或内部缓冲区。 管理这个最好的方法是什么?

我的项目是部分本地,使用NDK,所以如果需要,我可以使用C/CPP的方法。

谢谢。

回答

0

台标文件系统是很难的。有各种级别的缓存。当你进行I/O操作时,Linux(内核)会缓存你的数据,而且很难管理那个缓存,例如见cyanogenmod wiki page。事实上,你不应该依赖这样的机制,而应该使用更长时间的运行测试来观察sdcards的性能 - 一般来说它们是砖块(我是认真的)。

做文件系统基准测试检查长期居住项目也是一个非常不错的主意,比如iozone。这些链接的

+0

不帮我缓存..你有一定的参考缓存级别,以及如何控制它们? – Bush

+1

不,点是您的基准应用程序/算法需要在没有控制缓存的情况下运行。 – auselen

+0

如果对于每次阅读,我都会创建新文件。它是否绕过缓存难度? – Bush