Создание 1,3 ГБ файла занимает всего 1 секунду. Как?

44

У меня есть папка, которая содержит более 200 файлов и имеет размер более 1,3 ГБ:

введите описание изображения здесь

Я использую программное обеспечение Gizmo Drive для создания файла .iso из этой папки.

введите описание изображения здесь

Интересно, что это займет всего 1 или 2 секунды !

введите описание изображения здесь

Я пробовал это несколько раз. Я даже пытался создать файл .iso на другом томе. Опять же, это займет всего 1 или 2 секунды.

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

Так как создание файла .iso занимает всего 1 секунду! У вас есть какое-нибудь объяснение этому?

Заметки

  1. Все тесты проводятся на обычном HDD, без SSD.
  2. Используя Windows 7 x64, имеем 16 Гб памяти, процессор Core i5.

Я использовал sync.exe для сброса всех данных файловой системы на диск сразу после того, как файл .iso был создан, и для sync.exe потребовалось 14 секунд, чтобы сбросить данные. Это означает, что на самом деле создание файла .iso занимает 14 секунд. Быстрый тест на моем диске D: показывает, что он может записать тот же файл .iso с SSD на мой диск D: за 14 секунд, и это подтверждает, что исходная папка находится в ОЗУ, а для очистки данных требуется 14 секунд. **

Рамазан Полат
источник
28
Вы знаете ... кеширование.
mg30rg
1
Вы пытались повторить после полной перезагрузки компьютера?
ADTC
1
Я также предлагаю попробовать другое программное обеспечение, такое как CDBurnerXP, чтобы создать ISO, и проверить, если вы получите те же результаты. Также я надеюсь, что D:это не RAM Drive - вряд ли, но возможно.
ADTC
1
Попробуйте запустить Syncупомянутую здесь команду после создания ISO, посмотрите, сколько времени это займет.
Бармар
1
@ Barmar Я использовал Sync, и вы можете увидеть результат в последнем абзаце вопроса. Спасибо.
Рамазан Полат

Ответы:

69

С 16 ГБ ОЗУ у вас, вероятно, есть много свободного места для кэширования диска. Скорее всего, ISO только что был буферизован операционной системой в ОЗУ; это будет записано на диск позже, но приложения не должны ждать этого.

Wyzard
источник
42
Да, если выключить компьютер , не делая надлежащее завершение работы, данные , которые были недавно добавленные приложениями , возможно , не на самом деле были записаны на диск еще.
Вайзард
3
Это не займет много времени, чтобы «зарезервировать» пространство в файловой системе, я сделал это для очень больших файлов в C ++ (несколько ТБ), пытаясь найти последний байт смещения файла от источника - мгновенное выделение нескольких мерабайтных файлов ; на самом деле написание такой большой информации занимает немного времени, но в Windows 7 файлы кэшируются в «свободной» памяти - ранее прочитанные или записанные файлы будут сохранены в виде страниц до тех пор, пока не возникнет нехватка памяти для освобождения страниц при условии, что наиболее вероятный файл нужно было использовать самое последнее - это новое в Windows 7.
Майкл Стимсон,
10
Он не читал исходные файлы ... они уже кэшированы в оперативной памяти, потому что вы недавно обращались к ним. Перезагрузитесь, чтобы очистить кеш, затем попробуйте создать ISO, и это будет медленнее.
psusi
8
Стажировался в Microsoft. Мой менеджер много работал над NTFS и сказал мне (IIRC), что может пройти целых шестнадцать секунд с момента вызова WriteFileдо момента, когда данные начинают попадать на контроллер диска. В течение этого времени вызовы чтения / записи будут относиться к версии в памяти. Флаг сквозной записи позволит вам обойти кеш Windows, но вы все еще находитесь в зависимости от кеша контроллера диска.
zneak
2
Если вы скопируете свой файл на другой диск, вы скопируете правильные данные из кэша, даже если они еще не были записаны на диск. Весь доступ к файлам осуществляется через дисковый кеш операционной системы, поэтому ОС может предоставить правильное и согласованное представление о том, что было записано в файловую систему, даже если фактическая запись на базовый физический диск еще не завершена. (И я не уверен, что вы имеете в виду при записи всех нулей - значение байтов не влияет на то, как быстро они могут быть сохранены в ОЗУ.)
Wyzard