Ich wollte wissen, ob es eine Gleichung gibt, die Windows verwendet, um zu bestimmen, wie lange es dauert, eine Aktion für eine Datei auszuführen, z. B. Löschen, Kopieren, Löschen oder Installieren.
Wenn ich beispielsweise eine Datei lösche und Windows "Verbleibende Zeit: 18 Sekunden" anzeigt, wie berechnet und berechnet es diese Zahl?
windows
file-transfer
file-management
Yuritsuki
quelle
quelle
timeLeft = random(1,100);
Antworten:
Haben Sie bemerkt, dass Sie normalerweise in den ersten Sekunden keine Schätzungen erhalten?
Das liegt daran, dass es in den ersten Sekunden nur die Operation ausführt, die es ausführen muss. Dann, nach einer (kleinen) Zeit, weiß es, wie viel es bereits kopiert / gelöscht / etc hat und wie lange es gedauert hat . Das gibt Ihnen die durchschnittliche Geschwindigkeit der Operation.
Teilen Sie dann die verbleibenden Bytes durch die Geschwindigkeit, und Sie haben die Zeit, die erforderlich ist, um den Vorgang abzuschließen.
Das ist Grundschulmathematik. Wenn Sie 360 km zurücklegen möchten und am Ende der ersten Minute 1 km zurückgelegt haben, wie viel brauchen Sie, um an Ihr Ziel zu gelangen?
Nun, die Geschwindigkeit beträgt 1 km / min. Das sind 60 km / h. 360 km geteilt durch 60 km / h ergeben 6 Stunden (oder 360 km / 1 km / Minute = 360 Minuten = 6 Stunden). Da Sie bereits eine Minute gereist sind, beträgt die geschätzte verbleibende Zeit 5 Stunden und 59 Minuten.
Ersetzen Sie "Reisen" durch "Kopieren" und "km" durch "Bytes" und das ist Ihre Frage.
Unterschiedliche Systeme haben unterschiedliche Methoden zur Zeitschätzung. Sie können die letzte Minute in Anspruch nehmen, und die Schätzungen können stark variieren, oder Sie können die gesamte Zeit in Anspruch nehmen. Wenn sich die Geschwindigkeit tatsächlich dauerhaft ändert, sind Ihre Schätzungen möglicherweise weit von der Realität entfernt. Was ich beschrieben habe, ist die einfachste Methode.
quelle
1%
dauert estime so far * rand[0 - 10]
während der Anzeigefew seconds left
Die Antwort mit einer einfachen Kreuzmultiplikation ist schrecklich herablassend. Ich denke, ich bin mir sicher, dass er das bereits wusste. So schätzen wir ständig auch die Dinge in unserem Kopf.
Das Problem mit Fortschrittsbalken für den Dateivorgang besteht darin, dass dies nur für einheitliche Daten korrekt ist. Wenn Sie also 100 Dateien kopieren, die alle dieselbe Größe haben und Ihr Laufwerk nichts anderes tut, ist der geschätzte Fortschritt genau richtig, aber was ist, wenn der erste 99 Dateien waren kleine txt-Dateien und die letzte ist eine große Videodatei? Der Fortschritt wird weg sein.
Dieses Problem wird weiter verstärkt, wenn Sie nicht Dateien in einem Ordner, sondern in mehreren Unterordnern verarbeiten. Angenommen, Sie haben 5 Unterordner und möchten diese löschen (die Größe spielt in diesem Fall keine große Rolle). Die ersten 4 Ordner enthalten nur weniger als 10 Dateien. Wenn der Vorgang also in den 5. Ordner gelangt, von dem er glaubt, dass es sich um einen handelt 80% fertig, und der fünfte Boom- Ordner enthält 5000 Dateien und Ihr Fortschritt springt zurück auf 1%
WinXP versuchte dies zu umgehen, indem es die Anzahl der Dateien im Voraus zählte. Dies bedeutete, dass XP den Vorgang in den ersten 20 Sekunden (Zeitaufwand) nicht wirklich startete, wenn der Ordner nicht in Windows indiziert war, abhängig von der Anzahl der Dateien zählen), was alle wütend machte.
Obwohl ich auch keine besonderen Kenntnisse darüber habe, wie Windows es macht (aber was gibt es außer dem Zählen von Dateien und Bytes noch), hoffe ich, dass ich veranschaulichen kann, warum es fehlerhaft ist und warum es niemals perfekt sein wird.
Das Beste, was Sie tun könnten, wäre, sich nicht nur auf die Anzahl der Dateien oder die Anzahl der Bytes zu verlassen, sondern einen Durchschnitt aus beiden zu erstellen.
Oder wenn Sie besonders verrückt werden möchten, kann das Betriebssystem eine Datenbank darüber erstellen, wie lange diese Vorgänge in der Vergangenheit auf Ihrem Computer gedauert haben, und dies in die Gleichung einbeziehen.
Letzter Gedanke: Wenn jemand an ein Dateisystem denken würde, das dem Betriebssystem mitteilt, welche Größe jeder Ordner hat, ohne es vorher zu berechnen, würden Sie zumindest eine korrekte Fortschrittsschätzung erhalten, wenn Sie ganze Ordner und nicht nur Teile davon löschen.
quelle