10

Я хотел знать, есть ли уравнение, которое Windows использует для определения того, сколько времени требуется для выполнения действия с файлом, скажем, удаления, копирования, удаления или установки.

Например, когда я удаляю файл, и Windows говорит: «Оставшееся время: 18 секунд», как вычисляется это число и как используется?

2 ответа2

20

Вы заметили, что обычно это не дает никаких оценок в первые секунды?

Это потому, что в первые секунды он просто выполняет ту операцию, которую должен выполнить. Затем, через некоторое время, он знает, сколько он уже скопировал / удалил / и т.д., и сколько времени это заняло. Это дает вам среднюю скорость операции.

Затем разделите оставшиеся байты на скорость, и у вас будет время, необходимое для завершения операции.

Это начальная школа по математике. Если вы хотите проехать 360 км, и в конце первой минуты вы проехали 1 км, сколько вам потребуется, чтобы добраться до пункта назначения?

Ну, скорость составляет 1 км / мин. Это 60 км / ч. 360 км, разделенные на 60 км / ч, дают вам 6 часов (или 360 км / 1 км / мин = 360 минут = 6 часов). Поскольку вы уже путешествовали в течение одной минуты, то оставшееся время составляет примерно 5 часов 59 минут.

Замените "travel" на "copy", а "km" на "bytes", и это ваш вопрос.

Разные системы имеют разные способы оценки времени. Вы можете взять последнюю минуту, и оценки могут сильно отличаться, или вы можете взять полный рабочий день, и если скорость действительно меняется постоянно, ваши оценки могут быть далеки от реальности. То, что я описал, является самым простым методом.

1

отвечать простым кросс-умножением ужасно снисходительно, я думаю, я уверен, что он это уже знал, это то, как мы постоянно угадываем вещи в своей голове.

Проблема с индикаторами выполнения операций с файлами заключается в том, что это верно только для единообразных данных, поэтому, если вы скопируете 100 файлов одинакового размера, а ваш диск больше ничего не делает, ожидаемый прогресс будет заметен, но что если первый 99 файлов были маленькими txt-файлами, а последний - большим видеофайлом? Прогресс будет выходной.

Эта проблема усугубляется, когда вы работаете не с файлами в одной папке, а с несколькими подпапками. Допустим, у вас есть 5 вложенных папок, и вы хотите удалить их (тогда размер не имеет большого значения), первые 4 папки содержат менее 10 файлов, поэтому к моменту, когда операция подходит к 5-й папке, она думает, что На 80% сделано, и папка Boom 5 содержит 5000 файлов, и ваш прогресс возвращается к 1%

WinXP пытался обойти это путем предварительного подсчета количества файлов, что означало, что, когда папка не была проиндексирована в Windows, в зависимости от количества файлов, XP не запускала операцию в течение первых 20 секунд (времени, которое требовалось для считать), который всех разозлил.

Так что, хотя у меня нет специальных знаний о том, как это делает Windows (но что еще там есть, кроме подсчета файлов и байтов), я надеюсь, что смогу проиллюстрировать, почему она несовершенна и почему она никогда не будет идеальной.

Лучшее, что вы могли бы сделать, - это не полагаться исключительно на количество файлов ИЛИ bytecount, а построить среднее из двух.

Или, если вы хотите сойти с ума, ОС может запустить базу данных о том, сколько времени эти операции выполнялись на вашей машине в прошлом, и учесть это в уравнении.

Заключительная мысль: если бы кто-то подумал о файловой системе, которая позволяла бы ОС знать, какой размер имеет каждая папка, без предварительного ее расчета, вы, по крайней мере, получили бы правильную оценку прогресса при удалении целых папок, а не только их частей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .