我正在 android 设备和 sd 卡之间建立一个基准项目,以跟踪不同类型的 sd 卡之间的性能变化。
在我的基准测试中,我使用了许多 io 方法,以及对 sd 卡的逻辑和物理访问。有时我控制内部缓冲区的大小(使用setnvbuf()
)
在每个文件读/写之间,我想清除系统的缓存或内部缓冲区。管理此问题的最佳方法是什么?
我的项目是部分原生的,使用 ndk,所以如果需要我可以使用 ac/cpp 方法。
谢谢。
我正在 android 设备和 sd 卡之间建立一个基准项目,以跟踪不同类型的 sd 卡之间的性能变化。
在我的基准测试中,我使用了许多 io 方法,以及对 sd 卡的逻辑和物理访问。有时我控制内部缓冲区的大小(使用setnvbuf()
)
在每个文件读/写之间,我想清除系统的缓存或内部缓冲区。管理此问题的最佳方法是什么?
我的项目是部分原生的,使用 ndk,所以如果需要我可以使用 ac/cpp 方法。
谢谢。
基准标记文件系统很难。有各种级别的缓存。当您进行 i/o 操作时,Linux(内核)将缓存您的数据,并且很难管理该缓存,例如,请参阅这个cyanogenmod wiki 页面。事实上,你永远不应该依赖这种机制,而是使用运行时间更长的测试来查看 sdcard 的性能——这通常会使它们变砖(我是认真的)。
检查执行文件系统基准测试的长期项目也是一个非常好的主意,例如iozone。