Max Diesel писал(а): ↑Вс сен 11, 2022 1:21 am
i3v писал(а): ↑Сб сен 10, 2022 11:04 pm
В процессе, я почти случайно нашёл и прописал
LoadToolbarIconsWithDelay=0 и внезапно всё стало нормально. И вообще стало куда меньше подлагиваний при отрисовке. Правда, может быть это просто совпадение... Теперь мне даже интересно, этот ключ (в последний раз упоминавшийся в 2013, похоже) на что-то вообще в 4.21 влияет или давно устарел и ничего не меняет, на самом деле?
Этот ключ актуален. В некотором смысле он действительно имеет отношение к прорисовке. Если флаг установлен в режим "=1", тогда значки панели инструментов последовательно загрузятся после того как программа загрузит все модули, причем визуально будет заметно что значки появляются по очереди, на это конечно же уйдет чуть больше ресурсов для прорисовки. А если флаг в режиме "=0", то программа будет грузить значки панели в процессе загрузки модулей, а потому во-первых не будет наблюдаться последовательная загрузка значков панели инструментов (то есть они отобразятся сразу все), а во-вторых сама загрузка программы будет выглядеть более долгой. На мой взгляд если запуск Unreal Commander'а производится в неэкстремальных условиях (то есть не при стопроцентной загрузке процессора), то логичнее использовать режим "=1".
Спасибо за пояснение...
А он именно только на запуск влияет или и на последующие перерисовки тоже?
Скорость запуска в данном случае так и так была печальной по понятным причинам, но основная-то проблема не в этом, а в том, что (создавалось такое впечатление) перерисовка зацикливалась.
Т.е., допустим, перерисовка запускаетсяпо таймеру, раз в секунду, но в силу высокой загруженности CPU сама прорисовка занимает 2 секунды (в норме-то она, конечно, занимает 1мс где-нибудь). Т.е. прорисовка начинается заново сразу после окончания предыдущей. (Если бы таймер хотя бы запускался не "с фиксированной частотой" а с "фиксированной задержкой после окончания предыдущей прорисовки", у пользователя уже была бы возможность что-то сделать, не было бы "глухого зависания"....
-----------------------------
И ещё обнаружил сейчас, в похожей ситуации (даже при
LoadToolbarIconsWithDelay=0) следующую штуку, наверное более принципиальную для "подвисаний" (см. вложенный скриншот):
Один из дисков сильно нагружен (
H:\) и при этом он не супер быстрый. А UC, ещё при загрузке, несколько раз запрашивает его свойства (проверяет сколько свободного места, наверное?)
- по столбцу Duration видно, что каждое "спросить размер" занимает несколько секунд для H:\. Хотя для M: и N: там тысячной секунды на все эти операции в сумме не наберётся.
- за один "проход по всем дискам" каждый диск открывается-закрывается несколько раз, при том что спрашивается примерно одно и то же (может быть из-за того, что в коде последовательность каких-то высокоуровневых функций? или из-за того, что для каждой панели отдельно запрашивается?)
- не знаю, кстати, оптимальны ли флаги с которыми CreateFile делается (Synchronize)... Не от того ли оно тормозит, что пытается следить за изменениями, в результате?
- после окончания одного "прохода по всем дискам" фактически сразу начинается второй, хотя окно UC ещё не загрузилось (опять похоже на ситуацию с "запуском с фиксированной частотой")
- окно UC в данном случае так и не загрузилось окончательно.
Почему-то системе тяжело даются эти вызовы (может быть потому, что файлы на диск постоянно пишутся, с всё-таки приличными IOPS и поэтому размер постоянно меняется?
Если я угадал, что тормозит фактически получение размера и свбодного места на диске, то было бы наверное здорово если бы UC запрашивал эти свойства именно в духе "через минуту-две после того как прошлый результат получен", например (может быть даже с настраиваемым временем?). И может даже асинхронно, чтоб не дожидаясь их загрузки могла закончится загрузка окна...
Причём, похоже что чем больше процессов UC запущено, тем больше они мешают друг другу и другим приложениям, как будто - даже file explorer штатный начинает ещё больше тормозить (медленее переходить из папки в папку). Возникает подозрение, что несколько UC только и делают, что гоняют эти запросы по очереди, один сразу после другого - диск совсем почти подвисает. Хотя вроде бы только активное окно UC должно обновляться, а неактивные почти никаких событий в process monitor не создают. Непонятно...
Версия UC: 4.21 beta4 (build 1559).
У вас нет необходимых прав для просмотра вложений в этом сообщении.