delete
、rename
、およびmove
ファイル操作のコストはいくらですか? どれが一番速いですか?
Java を使用したいのですが、ファイルは Linux オペレーティング システムによって管理されています。
相対的なパフォーマンスはさまざまな要因に依存するため、一般的にどちらが速いとは言えません。そして、それはおそらく無関係です...なぜなら、それらは異なることをし、通常は交換可能ではないからです.
でも:
移動元と移動先の場所が同じファイル システムにある場合、名前の変更と移動は通常同等です。
move にファイル システム間の移動が含まれる場合、おそらく最もコストがかかります。 O(N)
バイトをコピーする必要があります。
それ以外の場合、delete がおそらく最もコストがかかります。OS は、親ディレクトリを更新し、ファイルが使用するすべてのディスク ブロックを空きとしてマークする必要があります。
実際のコストは、関連するオペレーティング システムとファイル システムのタイプ、および (場合によっては) 関連するファイルのサイズによっても異なります - 上記を参照してください。
これは、ファイル システムの実装の詳細に依存します。ほとんどのファイルシステムでは、オーダー 1 の O(1) 操作である必要があります。
ファイルの名前を変更することは、基本的にローカライズされた方法でパスを変更するだけなので、パスを変更するのと同じくらい速くなるはずです。削除は実際には参照を削除することを意味するだけなので、かなり高速になるはずです。
操作コストが大幅に増加する唯一のケースは、ファイルをコピーするか、他のパーティション/ディスクへのパスを変更する場合です。これらのケースでは、実際にはファイル システムがファイルをブロックごとにコピーする必要があります。
実際にかかる時間は、使用しているファイル システム (ext3、ext4、FAT など) と、もちろんハード ディスクとハード ディスク接続 (つまり、マザーボード) の速度に大きく依存します。