3

В Windows на разделе жесткого диска с Total Commander, если я произвожу поиск файла в корне файловой системы, например, C:\ , это займет значительное время: он будет отображаться по всей структуре каталогов (по-видимому, в глубину).

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

Я предполагаю, что не Total Commander кэширует структуру каталогов, или это так? Мне кажется, что это особенность ОС или кеш жесткого диска.

Где и как именно он тогда кешируется? (То есть. По какому компоненту, по какому механизму, по какой структуре?) Как система узнает, что кэш обновлен или нет? Если он может быть полностью кэширован, то почему он не кэшируется по умолчанию?

2 ответа2

3

Я предполагаю, что не Total Commander кэширует структуру каталогов, или это так?

Возможно нет. Если у вас есть большое количество файлов, вы можете увидеть тот же эффект, если откроете командную строку и наберете что-то вроде dir c:\abc.def /s У вас вряд ли будут файлы с таким именем, но это займет намного дольше, чтобы закончить в первый раз, чем потребовалось бы, если вы запустите его во второй раз сразу после.

Мне кажется, что это особенность ОС или кеш жесткого диска. Где и как именно он тогда кешируется? (То есть. По какому компоненту, по какому механизму, по какой структуре?)

Windows/NTFS будет кэшировать элементы, а также будет кэш в контроллере жесткого диска.

Как система узнает, что кэш обновлен или нет?

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

Если он может быть полностью кэширован, то почему он не кэшируется по умолчанию?

Потому что кеш лучше использовать для других вещей. Кэшировать это по умолчанию будет означать

  1. Каждый раз, когда компьютер запускается, он должен будет читать и хранить информацию о каждом файле на вашем жестком диске независимо от того, нужен ли он ему. Это может добавить несколько секунд к вашему времени запуска. Люди также часто имеют миллионы файлов, что означает, что времени может быть значительно больше.

  2. Эта память недоступна для кэширования чего-либо еще, особенно файлов, над которыми вы действительно работаете.

  3. Что произойдет, если ваш профиль / документы хранятся на сервере. Хотите, чтобы система подождала, пока она извлечет информацию обо всех ваших файлах по сети?

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

0

То, на что вы ссылаетесь, называется индексацией. Большинство поисковых запросов имеют индекс, который создается с течением времени для ускорения поиска. Пуск -> Поиск имеет индекс, TotalCommander, кажется, использует свой собственный, Google имеет один для всех веб-страниц, которые вы можете найти через Google.

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

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