2012-03-02 87 views
2

所有文件IO性能

当我尝试,我第一次插入到设备后,读取SD卡中的一些媒体文件,读取性能比第二时间差多了,没有任何人有任何关于这种现象的想法,我怎样才能避免这个问题,我试过打开和打开,但结果是一样的,我只是想读取性能是一样的,无论何时我插入SD卡,谢谢

回答

1

O_DIRECT使用(见open(2))时打开该文件将绕过缓冲器缓存。这通常不是一个好主意,但我希望它从跑步到跑步更加一致。

请注意,使用O_DIRECT要求读取的内存为SC_PAGESIZE,并以块为SC_PAGESIZE的倍数进行对齐和读取。

+0

:(,我已经尝试了这个标志,它可以工作,但性能甚至Android设备上更糟糕......,反正,感谢 – thisEric 2012-03-02 07:25:07

+0

但我敢打赌真正的钱,它是从跑步到跑步是一致的! – 2012-03-02 16:57:22

+0

嗨,布赖恩,我不明白你的观点,你的意思是O_DIRECT确实可以提高性能吗?但我尝试过设备,它不能,并且有什么问题? – thisEric 2012-03-03 03:03:32

1

你说在移除设备之前,首次读取比后续读取更糟糕?如果是这样,这是正常的 - 这是由于缓冲。基本上,系统正在使用系统RAM来加速设备的感知速度。

如果你将其卸载后取出卡,然后把它放回去,并重新安装它,我会想到第一次读会再慢一些,那么后续读取似乎再次更快定。

+0

嗨,杰瑞德,感谢您的回复,这完全像您所说的,我只是想知道如何改善第一次的表现,是否有可能第一次停止缓冲,并且会有帮助? – thisEric 2012-03-02 02:52:43

+0

通常,缓冲是有用的,你应该让系统去做。从SD卡读取总是比从RAM读取更慢! – 2012-03-02 06:17:15

+0

嗨巴西尔,你说得对,缓冲大多数时间是有用的,但我想知道如果没有缓冲,第一次表现会不会更好,我已经尝试过O_DIRECT标志,第一次表现更差,我感到困惑。 – thisEric 2012-03-02 08:22:25