web-dev-qa-db-ja.com

Windowsは、ファイルに対して特定のアクションを実行するのにかかる時間をどのように決定しますか?

Windowsがファイルに対してアクション(削除、コピー、消去、インストールなど)を実行するのにかかる時間を決定するために使用する方程式があるかどうかを知りたいと思いました。

enter image description here

たとえば、ファイルを削除しているときに、Windowsに「残り時間:18秒」と表示された場合、この数値をどのように計算し、何を使用しますか?

10
yuritsuki

通常、最初の数秒間は見積もりが表示されないことに気づきましたか?

これは、最初の数秒で、実行する必要のある操作を実行するだけだからです。次に、(小さい)しばらくすると、すでにコピー/削除された量/ etc、および方法がわかります時間がかかりました。それはあなたに操作の平均速度を与えます。

次に、残りのバイトを速度で割ると、操作を完了するのにかかる時間があります。

これは小学校の数学です。 360 kmを移動したい場合、最初の1分間に1 kmを移動した場合、目的地に到達するのにどれくらいの時間がかかりますか?

さて、速度は1km /分です。それは時速60キロです。 360kmを60km/hで割ると、6時間になります(または360 km/1 km /分= 360分= 6時間)。すでに1分間旅行したので、残りの推定時間は5時間59分です。

「travel」を「copy」に、「km」を「bytes」に置き換えてください。それがあなたの質問です。

システムが異なれば、時間を見積もる方法も異なります。土壇場で見積もりをとることができ、見積もりが大きく異なる場合もあれば、フルタイムでかかる場合もあります。実際に速度が恒久的に変化する場合、見積もりは現実からかけ離れている可能性があります。私が説明したのは最も簡単な方法です。

20

単純な帰一算で答えるのはひどく見下していると思います。彼はすでにそれを知っていたと思います。それは私たちが常に頭の中で物事を推測する方法でもあります。

ファイル操作の進行状況バーの問題は、均一なデータに対してのみ正しいことです。したがって、すべて同じサイズの100個のファイルをコピーし、ドライブが他に何もしていない場合、推定される進行状況はすぐにわかりますが、 99個のファイルは小さなtxtファイルで、最後のファイルは大きなビデオファイルですか?進捗状況は大幅に低下します。

この問題は、1つのフォルダーではなく、複数のサブフォルダーでファイルを処理している場合にさらに発生します。 5つのサブフォルダーがあり、それらを削除したいとします(この場合、サイズはそれほど重要ではありません)。最初の4つのフォルダーには10未満のファイルしか含まれていないため、操作が5番目のフォルダーに到達するまでに約80%完了、boom 5番目のフォルダーには5000個のファイルが含まれており、進行状況は1%に戻ります。

WinXPは、ファイルの数を事前にカウントすることでこれを回避しようとしました。つまり、ファイルの数に応じて、フォルダーがWindowsでインデックスに登録されていない場合、XPは実際には操作を開始しませんでした最初の20秒間(数えるのにかかった時間)、みんなが激怒しました。

したがって、Windowsがどのようにそれを行うかについての特別な知識もありませんが(ファイルとバイトのカウント以外に何がありますか)、なぜそれが欠陥であり、なぜ完璧にならないのかを説明できればと思います。

Filecount OR bytecountだけに依存するのではなく、2つから平均を作成するのが最善の方法です。

または、さらにクレイジーになりたい場合、OSは、これらの操作がマシン上で過去にかかった時間のデータベースを開始し、それを方程式に織り込むことができます。

最終的な考え:誰かが、最初に計算せずに、すべてのフォルダーのサイズをOSに知らせるファイルシステムを考えた場合、フォルダーの一部だけでなくフォルダー全体を削除するときに、少なくとも正しい進行状況の見積もりが得られます。

1
Troik