Open Source - Unicode Far

Хотите говорить о Far и не знаете, куда обратиться?
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Re: Open Source - Unicode Far

Post by t-rex »

Latest post of the previous page:

По большому счёту там небыло ничего такого уж очень страшного, скорее всего у John Doe очень серьёзная проблема с работой системы.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Open Source - Unicode Far

Post by John Doe »

Нельзя ли с этого места подробнее?
С виду система отлично работает, не виснет и не падает.

Тестовая версия запускается всё же медленнее чем Ansi
Запустил под процмоном - 8 обращений к FarFTP.dll (у анси - 4)
Лог нужен?
https://t.me/FarManager — Telegram чат
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Re: Open Source - Unicode Far

Post by t-rex »

Смысл в том что все эти "обращения" это полная фигня для нормальной системы.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Open Source - Unicode Far

Post by John Doe »

Верю, ведь и у меня это началось только три дня назад (правда никакой другой софт почему-то не начал тормозить)...

А что может быть поломано в системе? Куда рыть дальше?
https://t.me/FarManager — Telegram чат
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Open Source - Unicode Far

Post by zg »

John Doe wrote:А что может быть поломано в системе? Куда рыть дальше?
ну там все эти кучи открытий плагинов — это получение атрибута файла. по нормальному, оно всё кэшируется и должно работать быстро.
у тебя либо памяти мало. либо кто-то хучит операции с файлами.
User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Re: Open Source - Unicode Far

Post by Andrey Budko »

Глянул профайлером.

Скриншот загрузки фара с 30ю плагинами (без FrameManager->EnterMainLoop)
http://prboom-plus.sourceforge.net/far_before.png

Изменил в двух местах.

1. Казалось бы тупейшая функция MkKeyName(), которая просто складывает две строки и сует слеш между ними, как видно с рисунка, отжирает треть от всего времени загрузки. В подавляющем большинстве случаев она вызывается из OpenRegKey(), а внутри себя всырается на операторах + и =. Заменил тормозной класс UnicodeString на нэйтивный wchat_t, уменьшив этим суммарное время выполнения OpenRegKey() с 1.7 секунды (40%) до 34 милисекунд (1.5%). Менял только в OpenRegKey(), так как в остальных местах пох, а делать универсально ради проверки было лень.

2. KeyNameToKey() жрет 15% времени. Вообще загрузка макросов отжирает половину от общего времени загрузки. Это учитывая то, что макросов у меня в сумме 20 и все элементарные вида Esc = CtrlO. Несчастные 30 плагинов сожрали всего 8% от загрузки фара. Добавил в KeyNameToKey() перед вызовом CompareStringW проверку на длину, тем более что вычислять её не надо. Жалко что практически не помогло :) Там, кстати, небольшую ошибку заметил. Если у клавиши в реестре по неизвестным причинам будет двойной модификатор, например AltAltAdd, то ReplaceStrings(..-1..) удалит оба вхождения Alt, а следующая строчка (Pos+=ModifKeyName.Len) спозиционирует указатель неправильно.

После этих двух изменений стало так:
http://prboom-plus.sourceforge.net/far_after.png

Общее время загрузки фара по профайлеру сократилось почти в два раза. Хз как оно на самом деле. Графики на картинках отсортированы по колонке "The percentage of time spent in this function and its children"

Изменения тут:


Еще не смог понять, зачем фар при загрузке плагинов сортирует список после добавления каждого, а не один раз в конце?
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Re: Open Source - Unicode Far

Post by t-rex »

Проверь вот это:

Это в общем должно быть тоже самое что сделал ты но в 2 строчки.
Andrey Budko wrote:Еще не смог понять, зачем фар при загрузке плагинов сортирует список после добавления каждого, а не один раз в конце?
Тут вопрос не правильный, надо спрашивать почему в GetPlugin нет бинарного поиска если список то постоянно отсортированный.
User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Re: Open Source - Unicode Far

Post by Andrey Budko »

t-rex wrote:Проверь вот это:

Это в общем должно быть тоже самое что сделал ты но в 2 строчки.
Конкретно это - не очень. Время затрачиваемое на OpenRegKey() уменьшилось до 10% с 40%, а вот тот патч который ты мне дал только что в ICQ - вот он работает - 1.4%
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Open Source - Unicode Far

Post by Skirda »

Andrey Budko wrote:2. KeyNameToKey()... Там, кстати, небольшую ошибку заметил. Если у клавиши в реестре по неизвестным причинам будет двойной модификатор, например AltAltAdd, то ReplaceStrings(..-1..) удалит оба вхождения Alt, а следующая строчка (Pos+=ModifKeyName.Len) спозиционирует указатель неправильно.

попробуй вот так:

Code: Select all

Index: keyboard.cpp
===================================================================
--- keyboard.cpp	(revision 2960)
+++ keyboard.cpp	(working copy)
@@ -1579,9 +1579,9 @@
 		{
 			if(StrStrI(strTmpName,ModifKeyName[I].Name) && !(Key&ModifKeyName[I].Key))
 			{
-				ReplaceStrings(strTmpName,ModifKeyName[I].Name,L"",-1,TRUE);
+				int CntRepl=ReplaceStrings(strTmpName,ModifKeyName[I].Name,L"",-1,TRUE);
 				Key|=ModifKeyName[I].Key;
-				Pos+=ModifKeyName[I].Len;
+				Pos+=ModifKeyName[I].Len*CntRepl;
 			}
 		}
 	//Pos=strlen(TmpName);
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Re: Open Source - Unicode Far

Post by Andrey Budko »

Skirda wrote:попробуй вот так
Еще StrStrI не помешает заменить на StrStr, предварительно приведя к одному регистру (в списке модификаторов - статически). А еще лучше - закешировать как-то просчитанные числовые значения кнопкосочетаний, хотя и не особо понятно как это сделать прозрачно. Для вызывающей клавиши можно, например, втупую в скобочках дописывать CtrlAltUp (0x12345678), но это грубо. Сам секвенс сейчас как-то кешируется или каждый раз при старте парсится абсолютно все?
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Open Source - Unicode Far

Post by Skirda »

Andrey Budko wrote:Еще StrStrI не помешает заменить на StrStr, предварительно приведя к одному регистру (в списке модификаторов - статически).
Ок.
Andrey Budko wrote:Сам секвенс сейчас как-то кешируется или каждый раз при старте парсится абсолютно все?
второе.
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Open Source - Unicode Far

Post by Skirda »

А... не. привести к одному регистру влоб не пойдет т.к. и FKeys1 и ModifKeyName юзаются так же в KeyToText(). Разве что держать второй массив....
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Andrey Budko
Posts: 1203
Joined: Fri 01 Apr, 2005 14:03
Contact:

Re: Open Source - Unicode Far

Post by Andrey Budko »

Skirda wrote:Разве что держать второй массив....
Ну я имел в виду добавить еще одно поле в структуру и заполнить либо руками либо при старте
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Open Source - Unicode Far

Post by Skirda »

добавлю поле...
We are the Borg. You will be assimilated.
So Say We All!
mi3antrop
Posts: 49
Joined: Tue 15 Nov, 2005 18:31
Contact:

Re: Open Source - Unicode Far

Post by mi3antrop »

В far2 перестала работать такая вот раскраска файлов

Подсвечивает фон свежих файлов.
Если галку "продолжить обработку" снять - работает. Только смысл отпадает.
Может у каких-то настроек поменялся смысл, но в документации и по форуму не нашёл.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Open Source - Unicode Far

Post by John Doe »

По поводу папок и файлов, оканчивающихся точкой
alexandr_v wrote:Из последнего SDK, статья "Naming a File"
"
Do not end a file or directory name with a trailing space or a period. Although the underlying file system may support such names, the operating system does not. You can start a name with a period (.).
".

Может надо запретить создавать каталоги с точкой в конце?
Explorer не дает создать такой каталог.
Тикет уже как бы закрыт, а проблема осталась.

Имхо вполне разумно было бы запретить создание таких папок, а заодно и файлов, потому как создаются они как правило случайно.
https://t.me/FarManager — Telegram чат
Post Reply

Return to “Обсуждение Far Manager”