4

Если я копирую файл размером 213 МБ, он копирует МГНОВЕННО - ну, в течение миллисекунд. Если я копирую файл размером 936 МБ, это занимает около 1 минуты.

Оба файла находятся на корне моего диска E:\.

Почему такая разница? Даже если 213 МБ заняло 999 миллисекунд, последний должен копировать всего за несколько секунд, но это не так.

Машина имеет 4 Гб оперативной памяти, дуэт ядра и т.д. - оба на одном диске.

4 ответа4

3

Я заметил, что в Windows 7 существует высокий уровень кэширования. Если вы скопируете файл, который полностью поместится в доступную оперативную память, он вернет вам управление очень быстро, так что вы сможете выполнять работу, пока он завершает копирование в фоновом режиме.

Тем не менее, кэширование на самом деле не объясняет разницу во времени копирования файла, если только файл не находится в памяти, когда вы пытаетесь скопировать его, а другой нет. Одна минута для копии диска объемом 936 МБ с диска на диск составляет около 15 мегабайт в секунду, что является приемлемой скоростью передачи.

Другими словами, я ожидаю, что копирование файла размером 936 МБ займет около минуты.

0

Существует ряд команд, которые выполняются каждый раз, когда вы выполняете процедуру копирования файла. Если размер файла составляет 213 МБ, вы должны выполнить эти команды (скажем, 3 шага) и одну команду чтения / записи, чтобы скопировать файл.

Если ваш файл имеет размер 936 МБ, вы все равно должны выполнить 3 шага, упомянутых выше, и дополнительные 7 команд чтения / записи, чтобы фактически скопировать файл.

Таким образом, 100 небольших файлов общим объемом 900 МБ содержат 100 обязательных шагов и 100 шагов "копирования", и это займет больше времени, чем копирование одного файла объемом 900 МБ.

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

0

Являются ли ваши исходные и целевые диски одинаковыми в обоих ваших тестах? Копирование файлов на один и тот же диск занимает больше времени из-за того, что движется головка диска назад и вперед. Соответствующие заголовки могут читать / записывать последовательно (в ожидании количества фрагментов) при копировании с диска на диск.

0

По моему опыту, Windows будет сообщать о том, что файл скопирован, как только он будет считан в память. Если у него есть буферное пространство для файла 231 МБ, но нет 900 МБ, вам придется подождать, пока он не записает достаточно файла, чтобы прочитать его конец в память. Это может быть большое количество циклов чтения-записи на разных участках диска. С большим файлом пространство может быть дальше по всему диску, что приводит к более медленным циклам чтения-записи.

Windows также изначально имеет высокую оценку копий. Я часто получаю оценки минут, и копия завершается за несколько секунд или десятков секунд.

Копирование файла в область рядом с источником будет быстрее, чем копирование в другое место на диске. Задержка движения головы раньше была задержкой вращения. Оба увеличиваются с расстоянием. В последнее время я не смотрел на значения задержки, но ожидаю, что движение головы все еще медленнее, чем задержка вращения.

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