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


10

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

ここに画像の説明を入力してください

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


1
この数は頻繁に間違っているため、削除するファイル数、サイズ、および速度に基づいて推測されているため、削除のタイミングは推測を増減するように設定されています。
cybernard 14

1
@Ramhoundそして、それはそれがどれほど速くかかるかをどのように知るのですか?SSD、HDで実行されているマシンを含め、他のすべてのマシンで同じ静的変数ですか?200 GBのRAMがある場合はどうなりますか?10 MBのRAMがある場合はどうなりますか?アクションの「クイック」度をどのように計算していますか?
ゆりつき14

2
@imreallyfamecoreさて、基本的な考え方は、数秒間の速度を測定し、残りのプロセスが平均して同じ速度で継続すると想定しているということです。平均速度が時間とともに変化する場合、推定値が調整されます(悪名高い「Windowsは10分でコピーされ、すでに2時間経過していると言われました!」)。ただし、これは推測にすぎません。OSやアプリケーションが実際にかかる時間を知る方法はありません。HDDが破損している場合はどうなりますか?または、ネットワーク経由で転送していますか?または、断片化がたくさんありますか?
Luaan 14

6
私はこれのために罰せられることを知っています、しかし私は自分自身を助けることができません。これはあなたの答えではありません。XKCD:見積もり
KlaymenDK 14

10
コード:timeLeft = random(1,100);
MadTux 2014

回答:


20

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

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

次に、残りのバイトを速度で除算します。これで、操作を完了するのにかかる時間がわかります。

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

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

「旅行」を「コピー」に、「km」を「バイト」に置き換えてください。それがあなたの質問です。

システムによって、時間の見積もり方法は異なります。あなたは最後の分を取ることができます、そして、見積もりは非常に変わるかもしれません、または、あなたはフルタイムを取ることができます、そして、速度が実際に永久に変わるならば、あなたの見積もりは現実から遠く離れているかもしれません。私が説明したのは最も簡単な方法です。


12
明確にするために:これがWindowsのやり方だと主張していますか?それとも、単に答えを得ることができるいくつかの単純な算術を説明しているだけですか?
シュレッダーロイ2014

10
そして最後に1%それがtime so far * rand[0 - 10]表示している間にかかります few seconds left
マーク

1
興味がある場合は、この質問は、Windows(およびOSX)が残り時間を把握
Richard

1
これがWindowsのやり方だと言っているのではありません。それがまさにこのようにするなら、それは偶然です。それはそうですが、これは答えを得ることができる方法です。投稿者はこれがどのように行われるのかを知りたがっているように見え、Windowsが例として与えられました。(彼が提案したように)one-fits-all定数に残りのサイズを掛けることは完全に実行不可能であり、これらの推定がどのように行われたのか彼には手掛かりがなかったことが明らかになりました。
Valmiky Arquissandas 2014

4
@ValmikyArquissandas:Raymond Chen(MicrosoftのWindowsチームの開発者)は、彼のブログへの投稿でこのアルゴリズムを確認し、それがなぜ間違っているのかも説明しています。blogs.msdn.com/b/oldnewthing/archive/2004/01/06/47937.aspx
Richard

1

単純なクロス乗算で答えることはひどく納得のいくものだと私は思います、私は彼がすでにそれを知っていたと確信しています、それは私たちが私たちの頭の中で常に物事を推測する方法でもあります。

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

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

WinXPは、ファイルの数を事前にカウントしてこれを回避しようとしました。つまり、Windowsでフォルダーにインデックスが付けられていない場合、ファイルの数によっては、XPは最初の20秒間(実際にカウント)誰もが激怒しました。

したがって、Windowsの動作に関する特別な知識もありませんが(ファイルやバイトのカウント以外に何があるのでしょうか)、なぜ欠陥があり、完全ではないのかを説明できればと思います。

あなたができる最善のことは、ファイルカウントまたはバイトカウントだけに頼るのではなく、2つから平均を構築することです。

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.