Автодополнение в каталоге с многочисленными файлами

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Post Reply
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Автодополнение в каталоге с многочисленными файлами

Post by Arris »

Steps to reproduce:

Переходим в каталог, в котором много файлов (в моем случае - 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: Улучшен заголовок Темы
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Автодополнение в каталоге

Post by HaRT »

Arris wrote: Wed 30 Jun, 2021 09:38 Диалог автодополнения на каждый вводимый символ перечитывает оглавление каталога
На каком основании вы делаете такой вывод?
Ну и на всякий случай проверьте, улучшается ли что-то, если выставить режим панели, где показываются только имена файлов без дополнительных подробностей.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Автодополнение в каталоге

Post by buniak_a_h »

HaRT wrote: Wed 30 Jun, 2021 17:19 Ну и на всякий случай проверьте…
Я бы для начала выключил бы far:config -> Interface.Completion.UseFilesystem. Если дело именно в перечитывании каталога, то после выключения UseFilesystem тормоза должны пропасть.
Last edited by buniak_a_h on Wed 30 Jun, 2021 18:59, edited 1 time in total.
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Автодополнение в каталоге

Post by Arris »

HaRT wrote: Wed 30 Jun, 2021 17:19 Ну и на всякий случай проверьте, улучшается ли что-то, если выставить режим панели, где показываются только имена файлов без дополнительных подробностей.
Выставил режим Brief, даже снял галочку "Show long names".

Не изменилось ни-че-го.
buniak_a_h wrote: Wed 30 Jun, 2021 18:58 Interface.Completion.UseFilesystem
Если дело именно в перечитывании каталога, то после выключения UseFilesystem тормоза должны пропасть.
Absolutly. Тормоза пропали со-вер-шен-но!!!
Last edited by Arris on Thu 01 Jul, 2021 00:54, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Автодополнение в каталоге

Post by buniak_a_h »

Arris wrote: Thu 01 Jul, 2021 00:54 Тормоза пропали со-вер-шен-но!!!
Вывод однозначный: каждый раз, когда составляется список автодополнения (в той части, что берётся из FileSystem) Far, запрашивает список файлов ПО НОВОЙ!!! Так, вроде, даже студенты второго курса не пишут …
И да, явно проблема та же, что и при копировании файлов.
Last edited by buniak_a_h on Thu 01 Jul, 2021 01:12, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Автодополнение в каталоге

Post by HaRT »

buniak_a_h wrote: Thu 01 Jul, 2021 01:11 когда составляется список автодополнения (в той части, что берётся из FileSystem) Far, запрашивает список файлов ПО НОВОЙ!!! Так, вроде, даже студенты второго курса не пишут
Исключение возможно, если с момента прошлого листинга пришло уведомление, что в директории что-то добавилось/убавилось. Конечно, как оно там на деле происходит, я не знаю.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Автодополнение в каталоге

Post by buniak_a_h »

HaRT wrote: Thu 01 Jul, 2021 02:35 Исключение возможно, если с момента прошлого листинга пришло уведомление, что в директории что-то добавилось/убавилось.
1. Про исключение я не понял. Исключение чего из чего?
2. Если Вы имеете в виду повесить событие на перемены в папке (типа FindFirstChangeNotification/WaitForSingleObject), то я когда-то работал на файл-сервере NOVELL (по-моему, это - прародитель Samba). Так во там событие не генерировалось. Давно было. Очень …
3. На самом деле для нужд автодополнения вполне хватило бы один раз составить список файлов и в дальнейшем только фильтровать согласно изменению в ком.строке . Ну, правда, это может нарушить целостность архитектуры программы: разный подход к одному и тому же в зависимости от запроса. Некрасиво… Как сделано на самом деле - я не знаю. На СИ писал в середине 90-х, а на С++ - полностью самостоятельно не писал совсем.
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Автодополнение в каталоге

Post by Arris »

HaRT wrote: Thu 01 Jul, 2021 02:35 Исключение возможно, если с момента прошлого листинга пришло уведомление, что в директории что-то добавилось/убавилось.
Да, я понимаю, перечитывать после копирования файла каждый раз оглавление каталога нормально ЕСЛИ предположить, что кто-то другой в этот же каталог копирует файлы.

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

Но я не нашел в коде метода, отвечающего за это. Потому что комментариев в коде НОЛЬ, максимум "2002-05-15 Это депрекейтед с версии X.Y, удалить"
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Автодополнение в каталоге

Post by HaRT »

 ! Message from: HaRT
Предлагаю не обсуждать проблему с копированием ещё и в этой теме.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Автодополнение в каталоге

Post by buniak_a_h »

HaRT, видимо, логично было бы вычленить проблему составления списка файлов в папке для нужд (…список задач, в которых это проявляется, можете подставить сами) в отдельную тему.
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Автодополнение в каталоге

Post by Arris »

HaRT wrote: Thu 01 Jul, 2021 11:19 Предлагаю не обсуждать проблему с копированием ещё и в этой теме.
А мы только-только нащупали нечто общее между этими двумя проблемами. Можем посмотреть пересечения кода, например...
2useven10
Posts: 5210
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Автодополнение в каталоге

Post by 2useven10 »

Добавляйте ссылки на то что вы считаете 'общим' в оригинальную тему.
Или создайте отдельную сводную, если уверены что нашли что-то общее.
User avatar
Arris
Posts: 46
Joined: Mon 19 Dec, 2011 18:25
Has thanked: 3 times

Автодополнение в каталоге

Post by Arris »

Собственно, разработчик far2l решил эту проблему у себя так:

https://github.com/elfmz/far2l/commit/f ... 95c4ae34cc
Post Reply

Return to “Нужна помощь”