Я пытаюсь улучшить производительность elfinder, файлового менеджера на основе ajax (elRTE.ru).
Он использует os.listdir в recurisve для рекурсивного просмотра всех каталогов и получения производительности (например, перечисление каталога с 3000 + файлами занимает 7 секунд).
Я пытаюсь улучшить производительность для него, это функция хождения:
for d in os.listdir(path):
pd = os.path.join(path, d)
if os.path.isdir(pd) and not os.path.islink(pd) and self.__isAccepted(d):
tree['dirs'].append(self.__tree(pd))
Мои вопросы:
- Если я изменю os.walk вместо os.listdir, улучшит ли производительность?
- Как насчет использования dircache.listdir()? кешировать содержимое каталога/подкаталога WHOLE в исходном запросе и возвращать результаты кеша, если нет новых файлов, загруженных или никаких изменений в файле?
- Есть ли какой-нибудь другой метод хождения по каталогу, который быстрее?
- Любой другой браузер на стороне сервера, который быстро написан на питоне (но я предпочитаю сделать это быстро)?