Latest post of the previous page:
По большому счёту там небыло ничего такого уж очень страшного, скорее всего у John Doe очень серьёзная проблема с работой системы.Open Source - Unicode Far
- 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
Нельзя ли с этого места подробнее?
С виду система отлично работает, не виснет и не падает.
Тестовая версия запускается всё же медленнее чем Ansi
Запустил под процмоном - 8 обращений к FarFTP.dll (у анси - 4)
Лог нужен?
С виду система отлично работает, не виснет и не падает.
Тестовая версия запускается всё же медленнее чем Ansi
Запустил под процмоном - 8 обращений к FarFTP.dll (у анси - 4)
Лог нужен?
https://t.me/FarManager — Telegram чат
- 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
Смысл в том что все эти "обращения" это полная фигня для нормальной системы.
- 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
Верю, ведь и у меня это началось только три дня назад (правда никакой другой софт почему-то не начал тормозить)...
А что может быть поломано в системе? Куда рыть дальше?
А что может быть поломано в системе? Куда рыть дальше?
https://t.me/FarManager — Telegram чат
- zg
- zero-gravity
- Posts: 6016
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: Open Source - Unicode Far
ну там все эти кучи открытий плагинов — это получение атрибута файла. по нормальному, оно всё кэшируется и должно работать быстро.John Doe wrote:А что может быть поломано в системе? Куда рыть дальше?
у тебя либо памяти мало. либо кто-то хучит операции с файлами.
- Andrey Budko
- Posts: 1203
- Joined: Fri 01 Apr, 2005 14:03
- Contact:
Re: Open Source - Unicode Far
Глянул профайлером.
Скриншот загрузки фара с 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"
Изменения тут:
Еще не смог понять, зачем фар при загрузке плагинов сортирует список после добавления каждого, а не один раз в конце?
Скриншот загрузки фара с 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"
Изменения тут:
Еще не смог понять, зачем фар при загрузке плагинов сортирует список после добавления каждого, а не один раз в конце?
- 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
Проверь вот это:
Это в общем должно быть тоже самое что сделал ты но в 2 строчки.
Это в общем должно быть тоже самое что сделал ты но в 2 строчки.
Тут вопрос не правильный, надо спрашивать почему в GetPlugin нет бинарного поиска если список то постоянно отсортированный.Andrey Budko wrote:Еще не смог понять, зачем фар при загрузке плагинов сортирует список после добавления каждого, а не один раз в конце?
- Andrey Budko
- Posts: 1203
- Joined: Fri 01 Apr, 2005 14:03
- Contact:
Re: Open Source - Unicode Far
Конкретно это - не очень. Время затрачиваемое на OpenRegKey() уменьшилось до 10% с 40%, а вот тот патч который ты мне дал только что в ICQ - вот он работает - 1.4%t-rex wrote:Проверь вот это:
Это в общем должно быть тоже самое что сделал ты но в 2 строчки.
Re: Open Source - Unicode Far
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!
So Say We All!
- Andrey Budko
- Posts: 1203
- Joined: Fri 01 Apr, 2005 14:03
- Contact:
Re: Open Source - Unicode Far
Еще StrStrI не помешает заменить на StrStr, предварительно приведя к одному регистру (в списке модификаторов - статически). А еще лучше - закешировать как-то просчитанные числовые значения кнопкосочетаний, хотя и не особо понятно как это сделать прозрачно. Для вызывающей клавиши можно, например, втупую в скобочках дописывать CtrlAltUp (0x12345678), но это грубо. Сам секвенс сейчас как-то кешируется или каждый раз при старте парсится абсолютно все?Skirda wrote:попробуй вот так
Re: Open Source - Unicode Far
Ок.Andrey Budko wrote:Еще StrStrI не помешает заменить на StrStr, предварительно приведя к одному регистру (в списке модификаторов - статически).
второе.Andrey Budko wrote:Сам секвенс сейчас как-то кешируется или каждый раз при старте парсится абсолютно все?
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: Open Source - Unicode Far
А... не. привести к одному регистру влоб не пойдет т.к. и FKeys1 и ModifKeyName юзаются так же в KeyToText(). Разве что держать второй массив....
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- Andrey Budko
- Posts: 1203
- Joined: Fri 01 Apr, 2005 14:03
- Contact:
Re: Open Source - Unicode Far
Ну я имел в виду добавить еще одно поле в структуру и заполнить либо руками либо при стартеSkirda wrote:Разве что держать второй массив....
Re: Open Source - Unicode Far
добавлю поле...
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: Open Source - Unicode Far
В far2 перестала работать такая вот раскраска файлов
Подсвечивает фон свежих файлов.
Если галку "продолжить обработку" снять - работает. Только смысл отпадает.
Может у каких-то настроек поменялся смысл, но в документации и по форуму не нашёл.
Подсвечивает фон свежих файлов.
Если галку "продолжить обработку" снять - работает. Только смысл отпадает.
Может у каких-то настроек поменялся смысл, но в документации и по форуму не нашёл.
- 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
По поводу папок и файлов, оканчивающихся точкой
Имхо вполне разумно было бы запретить создание таких папок, а заодно и файлов, потому как создаются они как правило случайно.
Тикет уже как бы закрыт, а проблема осталась.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 чат