iPhoneプログラミングガイドより
ファイルを作成するとき、またはファイル データを書き出すときは、次のガイドラインに留意してください。
- ディスクに書き込むデータの量を最小限に抑えます。ファイル操作は比較的遅く、寿命が限られているフラッシュ ディスクへの書き込みを伴います。ファイル関連の操作を最小限に抑えるための具体的なヒントには、次のようなものがあります。
- 変更されたファイルの部分のみを書き込みますが、可能な場合は変更を集約します。
- 数バイトを変更するためだけにファイル全体を書き出すことは避けてください。
- ファイル形式を定義するときは、頻繁に変更されるコンテンツをグループ化して、毎回ディスクに書き込む必要があるブロックの総数を最小限に抑えます。
- データがランダムにアクセスされる構造化コンテンツで構成されている場合は、Core Data 永続ストアまたは SQLite データベースに保存します。これは、操作するデータの量が数メガバイトを超える可能性がある場合に特に重要です。
- キャッシュ ファイルをディスクに書き込まないようにします。このルールの唯一の例外は、アプリケーションが終了し、次回の起動時にアプリケーションを同じ状態に戻すために使用できる状態情報を書き込む必要がある場合です。
しばらく前に Intel SSD に関する記事を読みました (残念ながら今は見つけられません)。寿命に関する主な懸念は、OS が実際にデータを削除するのではなく、ブロックを空きとしてマークしただけであるという事実によるものであると述べていました。 、これらの「空き」ブロックが書き込まれると、かなり苦痛な速度低下を引き起こします(単に保存するのではなく、読み取り-変更-保存を引き起こします)。これは iPhone にも当てはまりますか。つまり、ファイルが頻繁に削除されると、ドライブは速度低下の影響を受けやすくなりますか?
再実行ログに基づくファイル形式を検討しています。この方法では、クロスセッションの元に戻すことができ、ランダムな書き込み (常に追加) もありませんが、ある時点で、少なくとも統合する必要があると思いますファイルサイズを適切なレベルに保つために、ログの一部。この場合の私の質問は、どちらがより効率的でしょうか (ドライブの寿命に関して)? 私が検討したいくつかのパスがあります
- 同じファイルを上書きし、
- 不要なスペースを切り捨てる
- または、そのスペース(古いデータでいっぱい)を残して、再び必要になったときに上書きします
- または新しいファイルを作成し、古いファイルを削除します
しかし、私は提案を受け入れています。典型的なファイル サイズは数 kB から数百 kB の範囲になると思いますが、より高い値は何よりも推測にすぎません。