2012-03-02 89 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