Автодополнение в каталоге с многочисленными файлами
Автодополнение в каталоге с многочисленными файлами
Steps to reproduce:
Переходим в каталог, в котором много файлов (в моем случае - 5000) и начинаем печатать в командной строке что угодно.
Диалог автодополнения на каждый вводимый символ перечитывает оглавление каталога и делает это безумно медленно, по 2-3 секунды на символ.
Судя по всему, проблема напрямую смыкается с viewtopic.php?f=4&t=12466 ( Вопрос о копировании файлов )
Видео: https://youtu.be/-mSn9teaRZg
P.S. Да, каталог смонтирован через `net use`, это samba shared network directoctory.
Переходим в каталог, в котором много файлов (в моем случае - 5000) и начинаем печатать в командной строке что угодно.
Диалог автодополнения на каждый вводимый символ перечитывает оглавление каталога и делает это безумно медленно, по 2-3 секунды на символ.
Судя по всему, проблема напрямую смыкается с viewtopic.php?f=4&t=12466 ( Вопрос о копировании файлов )
Видео: https://youtu.be/-mSn9teaRZg
P.S. Да, каталог смонтирован через `net use`, это samba shared network directoctory.
Last edited by HaRT on Sat 24 Jun, 2023 13:58, edited 3 times in total.
Reason: Улучшен заголовок Темы
Reason: Улучшен заголовок Темы
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Автодополнение в каталоге
На каком основании вы делаете такой вывод?
Ну и на всякий случай проверьте, улучшается ли что-то, если выставить режим панели, где показываются только имена файлов без дополнительных подробностей.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Автодополнение в каталоге
Я бы для начала выключил бы far:config -> Interface.Completion.UseFilesystem. Если дело именно в перечитывании каталога, то после выключения UseFilesystem тормоза должны пропасть.
Last edited by buniak_a_h on Wed 30 Jun, 2021 18:59, edited 1 time in total.
Автодополнение в каталоге
Выставил режим Brief, даже снял галочку "Show long names".
Не изменилось ни-че-го.
Absolutly. Тормоза пропали со-вер-шен-но!!!buniak_a_h wrote: ↑Wed 30 Jun, 2021 18:58 Interface.Completion.UseFilesystem
Если дело именно в перечитывании каталога, то после выключения UseFilesystem тормоза должны пропасть.
Last edited by Arris on Thu 01 Jul, 2021 00:54, edited 1 time in total.
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Автодополнение в каталоге
Вывод однозначный: каждый раз, когда составляется список автодополнения (в той части, что берётся из FileSystem) Far, запрашивает список файлов ПО НОВОЙ!!! Так, вроде, даже студенты второго курса не пишут …
И да, явно проблема та же, что и при копировании файлов.
Last edited by buniak_a_h on Thu 01 Jul, 2021 01:12, edited 1 time in total.
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Автодополнение в каталоге
Исключение возможно, если с момента прошлого листинга пришло уведомление, что в директории что-то добавилось/убавилось. Конечно, как оно там на деле происходит, я не знаю.buniak_a_h wrote: ↑Thu 01 Jul, 2021 01:11 когда составляется список автодополнения (в той части, что берётся из FileSystem) Far, запрашивает список файлов ПО НОВОЙ!!! Так, вроде, даже студенты второго курса не пишут
Фар есть инструмент, а не нянька. © 2009 DrKnS
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Автодополнение в каталоге
1. Про исключение я не понял. Исключение чего из чего?
2. Если Вы имеете в виду повесить событие на перемены в папке (типа FindFirstChangeNotification/WaitForSingleObject), то я когда-то работал на файл-сервере NOVELL (по-моему, это - прародитель Samba). Так во там событие не генерировалось. Давно было. Очень …
3. На самом деле для нужд автодополнения вполне хватило бы один раз составить список файлов и в дальнейшем только фильтровать согласно изменению в ком.строке . Ну, правда, это может нарушить целостность архитектуры программы: разный подход к одному и тому же в зависимости от запроса. Некрасиво… Как сделано на самом деле - я не знаю. На СИ писал в середине 90-х, а на С++ - полностью самостоятельно не писал совсем.
Автодополнение в каталоге
Да, я понимаю, перечитывать после копирования файла каждый раз оглавление каталога нормально ЕСЛИ предположить, что кто-то другой в этот же каталог копирует файлы.
Сдается мне, когда-то решили, что "прочитать оглавление каталога" - более быстрая операция, чем проверка существования единичного файла....
Но я не нашел в коде метода, отвечающего за это. Потому что комментариев в коде НОЛЬ, максимум "2002-05-15 Это депрекейтед с версии X.Y, удалить"
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Автодополнение в каталоге
HaRT, видимо, логично было бы вычленить проблему составления списка файлов в папке для нужд (…список задач, в которых это проявляется, можете подставить сами) в отдельную тему.
Автодополнение в каталоге
А мы только-только нащупали нечто общее между этими двумя проблемами. Можем посмотреть пересечения кода, например...
Автодополнение в каталоге
Собственно, разработчик far2l решил эту проблему у себя так:
https://github.com/elfmz/far2l/commit/f ... 95c4ae34cc
https://github.com/elfmz/far2l/commit/f ... 95c4ae34cc