2

deleterename、およびmoveファイル操作のコストはいくらですか? どれが一番速いですか?

Java を使用したいのですが、ファイルは Linux オペレーティング システムによって管理されています。

4

3 に答える 3

3

相対的なパフォーマンスはさまざまな要因に依存するため、一般的にどちらが速いとは言えません。そして、それはおそらく無関係です...なぜなら、それらは異なることをし、通常は交換可能ではないからです.

でも:

  • 移動元と移動先の場所が同じファイル システムにある場合、名前の変更と移動は通常同等です。

  • move にファイル システム間の移動が含まれる場合、おそらく最もコストがかかります。 O(N)バイトをコピーする必要があります。

  • それ以外の場合、delete がおそらく最もコストがかかります。OS は、親ディレクトリを更新し、ファイルが使用するすべてのディスク ブロックを空きとしてマークする必要があります。

  • 実際のコストは、関連するオペレーティング システムとファイル システムのタイプ、および (場合によっては) 関連するファイルのサイズによっても異なります - 上記を参照してください。

于 2012-12-18T07:36:14.293 に答える
1

これは、ファイル システムの実装の詳細に依存します。ほとんどのファイルシステムでは、オーダー 1 の O(1) 操作である必要があります。

于 2012-12-18T07:04:25.337 に答える
0

ファイルの名前を変更することは、基本的にローカライズされた方法でパスを変更するだけなので、パスを変更するのと同じくらい速くなるはずです。削除は実際には参照を削除することを意味するだけなので、かなり高速になるはずです。

操作コストが大幅に増加する唯一のケースは、ファイルをコピーするか、他のパーティション/ディスクへのパスを変更する場合です。これらのケースでは、実際にはファイル システムがファイルをブロックごとにコピーする必要があります。

実際にかかる時間は、使用しているファイル システム (ext3、ext4、FAT など) と、もちろんハード ディスクとハード ディスク接続 (つまり、マザーボード) の速度に大きく依存します。

  • 質問に対する決定的な回答が必要な場合は、特定のテスト設定を使用して自分でベンチマークすることを避けることはできないと思います。
于 2012-12-18T07:14:29.100 に答える