Как быстрее сканировать CD с данными?

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

Какой самый лучший и быстрый подход для этого?
Может ли рекурсивное сканирование заставить головку CD-диска прыгать по диску в поисках файлов / папок?

Я хочу уменьшить скачки головки CD-устройства и сделать это как можно быстрее.
Кстати: я использую UNIX и C / C ++.

2

Решение

Согласно спецификации ISO 9660:

В дескрипторе основного тома содержится запись корневого каталога, описывающая местоположение смежного корневого каталога. (Как и в UNIX, каталоги отображаются в виде файлов для специального использования операционной системы). Записи каталога последовательно хранятся в этом регионе. Оценка имен файлов ISO 9660 начинается в этом месте. Корневой каталог хранится в виде экстента или последовательного ряда секторов, который содержит каждую из записей каталога, появляющихся в корневом каталоге.

Учитывая эту информацию, я бы предположил, что прыжки с головы довольно неизбежны. Вы начнете с этого каталога верхнего уровня, скажем, Track X Sector Y, выполните сканирование, чтобы найти первый каталог для прохождения, и двигаетесь вниз по диску. Так что голова будет прыгать всякий раз, когда вы ныряете дальше в дерево, независимо от того, как вы «ныряете». Если бы был способ сканирования диска по треку, а затем по сектору, это принесло бы пользу, но я не уверен, как это сделать, и стоит ли его реализовывать.

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

Я бы сказал, пойти с рекурсией, поскольку это имеет логический смысл для обходов деревьев

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]