Windowsがファイルの操作(削除、コピー、消去、インストールなど)にかかる時間を決定するために使用する方程式があるかどうか知りたいと思いました。
たとえば、ファイルを削除しているときにWindowsで「残り時間:18秒」と表示された場合、この数値はどのように計算され、何が使用されますか。
timeLeft = random(1,100);
Windowsがファイルの操作(削除、コピー、消去、インストールなど)にかかる時間を決定するために使用する方程式があるかどうか知りたいと思いました。
たとえば、ファイルを削除しているときにWindowsで「残り時間:18秒」と表示された場合、この数値はどのように計算され、何が使用されますか。
timeLeft = random(1,100);
回答:
通常、最初の数秒間は見積もりが出ないことに気づきましたか?
それは、最初の数秒間は、実行する必要がある操作を実行するだけだからです。次に、(少し)しばらくすると、すでにコピー/削除/などされている量と、どれだけの時間がかかったかがわかります。これにより、操作の平均速度が得られます。
次に、残りのバイトを速度で除算します。これで、操作を完了するのにかかる時間がわかります。
これは小学校の数学です。360 km移動したい場合、最初の1分の終わりに1 km移動した場合、目的地までどれくらいかかりますか?
まあ、速度は1キロ/分です。時速60 kmです。360 kmを60 km / hで割ると6時間になります(または360 km / 1 km /分= 360分= 6時間)。すでに1分間移動したので、残りの推定時間は5時間59分です。
「旅行」を「コピー」に、「km」を「バイト」に置き換えてください。それがあなたの質問です。
システムによって、時間の見積もり方法は異なります。あなたは最後の分を取ることができます、そして、見積もりは非常に変わるかもしれません、または、あなたはフルタイムを取ることができます、そして、速度が実際に永久に変わるならば、あなたの見積もりは現実から遠く離れているかもしれません。私が説明したのは最も簡単な方法です。
1%
それがtime so far * rand[0 - 10]
表示している間にかかります few seconds left
単純なクロス乗算で答えることはひどく納得のいくものだと私は思います、私は彼がすでにそれを知っていたと確信しています、それは私たちが私たちの頭の中で常に物事を推測する方法でもあります。
ファイル操作の進行状況バーの問題は、均一なデータに対してのみ正しいことです。そのため、すべて同じサイズの100個のファイルをコピーし、ドライブが他に何も実行していない場合、推定の進行状況はスポットされますが、最初の場合99個のファイルは小さなtxtファイルで、最後のファイルは大きなビデオファイルですか?進行状況はオフになります。
この問題は、1つのフォルダーではなく複数のサブフォルダー内のファイルを処理している場合にさらに増加します。5つのサブフォルダーがあり、それらを削除したいとします(この場合、サイズはそれほど重要ではありません)。最初の4つのフォルダーには10個未満のファイルしか含まれていないため、操作が5番目のフォルダーに到達するまでに、 80%完了、ブームの 5番目のフォルダーには5000個のファイルが含まれ、進行状況は1%に戻ります
WinXPは、ファイルの数を事前にカウントしてこれを回避しようとしました。つまり、Windowsでフォルダーにインデックスが付けられていない場合、ファイルの数によっては、XPは最初の20秒間(実際にカウント)誰もが激怒しました。
したがって、Windowsの動作に関する特別な知識もありませんが(ファイルやバイトのカウント以外に何があるのでしょうか)、なぜ欠陥があり、完全ではないのかを説明できればと思います。
あなたができる最善のことは、ファイルカウントまたはバイトカウントだけに頼るのではなく、2つから平均を構築することです。
または、さらにクレイジーになりたい場合、OSは、これらの操作がマシンで過去にかかった時間のデータベースを開始し、それを方程式に組み込むことができます。
最終的な考え:最初に計算せずに、すべてのフォルダーのサイズをOSに知らせるファイルシステムを誰かが考える場合、少なくともフォルダーの一部ではなくフォルダー全体を削除するときに、正しい進行状況を推定できます。