Androidでキャッシュなしでファイルを読み取る方法は?
-
11-10-2019 - |
質問
Androidプラットフォームのテストアプリケーションに取り組んでいます。 sdcardに書き込み/読み取り速度をテストします。 NDKインターフェイスでC言語で書きます。
最初に、それぞれに512のランダムバイトを備えた256ファイルを作成するために、for-loopを書きます。この部分は正常に動作します。 Flag o_creat | o_wronly | o_syncとモード0666を使用してファイルを開きます。コール書き込みの後、データがカードに記述されていることを確認します。
次に、別の2レベルのフォーループを書き、これらのファイルを読み取り、速度をテストします。 O_RDWR | O_SYNCを使用してファイルを開きます。次に、read()を呼び出します。
これが問題です。読み取りパーツを初めて実行するのが初めての場合です。読み取る最初のループは、後よりも時間がかかります。最初のループの後、プログラムは実際の物理カードではなくキャッシュを読み取るからだと確信しています。
O_Directフラグを読んで読みました。しかし、Einvalでエラーが発生します。 OpenのManページでは、この機能がプラットフォームで実装されていないためかもしれません。
Androidでノーキャッシュで読む方法について何か考えがありますか?
解決
操作システムレベルのキャッシュを無効にするために、ルート付き電話が必要になる場合があります。
http://wiki.cyanogenmod.com/index.php?title=sdcardspeedtests
それはまた、積み込みバッファーを圧倒するのに十分な大きさの操作を行うように注意します。
所属していません StackOverflow