0

Android デバイスの外部 SD カードの I/O 操作に関する統計を作成する cpp アプリをいくつか作成しました。

読み取り目的でファイルを開くと、数十マイクロ秒かかることに気付きました。たとえば、138 マイクロ秒で、書き込み目的では 5265 マイクロ秒かかります

何故ですか?

編集:「O_WRONLY」の場合-ファイルは以前に存在しません。

私の特定のコードは次のようになります。

int fd = open(file_name, O_RDONLY);

int fd = open(tmp_name,O_CREAT|O_TRUNC|O_WRONLY);
4

2 に答える 2

2

ファイルが存在する場合、2 番目のケースでは切り詰める必要があります。これには追加の作業が必要であり、違いを十分に説明できます。

ファイルが存在しない場合、最初の呼び出しは失敗し、2 番目の呼び出しでファイルが作成されます。ファイルの作成には作業が必要であり、ファイルが存在しないことを単に発見するよりも時間がかかります。

于 2012-11-28T09:21:39.197 に答える
1

切り捨てとは、おそらくSDカードの内容を変更することを意味します。切り捨てられたファイルが非常に大きい場合、これには時間がかかる可能性があります。

とにかくファイルの作成にはSDカードへの書き込みが含まれるため、単に読み取るよりも確実に遅くなります。書き込み速度に影響を与えるもう1つの要因は、SDカードの使用年数です。小さな書き込みであっても多くの書き込みがあった場合、新しい未使用のブロックの検索にはかなりの時間がかかる可能性があります。

于 2012-11-28T09:22:46.983 に答える