簡単に言えば、プロファイルとプロファイルの両方を書きます。
かなり手を振っている長い答え:
ファイルの上書きには、次のシステム コールが含まれます。
open
write
close
新しいファイルの作成、古いファイルの削除、および新しいファイルの名前の変更には、次のシステム コールが含まれます。
open
write
close
unlink
rename
システム コールは、多くの場合、プログラムの最も遅い部分です。一般に、システム コールを減らすことは、プログラムを高速化する良い方法です。1 つのファイルを上書きすると、オペレーティング システムの内部ディレクトリ エントリ データが再利用されます。これはおそらく速度の改善にもつながるでしょう。(VM オーバーヘッドのある言語では測定が難しい場合があります...)
write()
1 回の書き込みで 1K 全体を更新すると仮定すると、ファイルは十分に小さく、それぞれをアトミックに処理する必要があります。(パフォーマンスを気にするので、これは安全な仮定のようです。)これは、壊滅的な電源障害と損失の多いマウントオプションの場合を除いて、他のプロセスが部分的な書き込みを見てはならないことを意味します. (一般的ではありません。)ファイルの名前変更アプローチは、複数の書き込みに直面しても一貫したファイルを提供します。
ただし、1K ファイルはかなり非効率的なストレージ メカニズムです。多くのファイルシステムは、4k ブロックに沿ってファイルを書き込みます。これらのデータ ブロックがアプリケーションにのみ存在する場合は、一度にいくつかのコンテナーに書き込むことが理にかなっている場合があります。(巨大なストリーミング IO リクエストは、何千もの小さな IO リクエストよりもはるかに高速であるため、Quake 派生システムは、マップ、テクスチャなどを zip ファイルから読み取るためにこれを行います。) もちろん、アプリケーションが書き込みを行っている場合、これは困難です。これらのファイルを他のアプリケーションで使用できるようにしますが、ファイルがめったに共有されない場合は調査する価値があるかもしれません。