Рекурсивный поиск и обработка

Discussion in 'Программирование' started by The Last Winged, Apr 28, 2005.

  1. The Last Winged

    The Last Winged Активный участник

    12,536
    376
    Собственно есть программа, которая смотрит файлы при запуске в определенной папке и изменяет их :vcrazy: . Однако рекурсивный просмотр и изменение занимает много ресурсов машины, делать приходится неоднократно.Как можно распределить этот процес(ну например, обрабатывать пол-папки и т.д.)?
     
  2. AlTk

    AlTk Читатель

    10,685
    1
    "рекурсивный просмотр и изменение занимает много ресурсов машины"
    как вы это выяснили?
    во время выполнения рекурсии (в отличии от реккурентного алгоритма) используется память (стек) для хранения переменных и осуществляется множество вызовов и возвратов из функций, опять же память(стек) и время на выполнение перехода - где там "много ресурсов"?

    ПС. может алгоритм неправильно написан?
     
  3. The Last Winged

    The Last Winged Активный участник

    12,536
    376

    по времени =)
    обход всего дерева каталогов и проверка файлов данного типа занимает много времени... файлов ОЧЕНЬ много...
    делаю на пхп(именно так ;) ) для никсов, ссылка не помогла :(

    Если сделать список файлов и записать их в один файл, то файл будет ОГРОМНЫМ, да и сами файлы будут обновляться, меняться их кол-во =\
     
  4. m4a1

    m4a1 Участник

    249
    0
    мало данных о сабдже...

    если нужно вылавливать изменен ли файл или нет - то не думаю, что вызов функции filemtime() для каждого файла будет занимать много времени.

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

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

    вообще в таких случаях рекурсия конечно удобна и ее легче организовать ;), но если представить количество вложенных итераций, то становится жаль сервер :upset:
     
  5. Mix

    Mix Активный участник

    7,766
    0
    Любая рекурсия может быть заменена циклом. Только эффект непонятен. В общем наверно надо действительно смотреть алгоритм. Скорее всего что-то там не так.