Добавить
Уведомления

Рутина инди-разработчика: правим баги. Фризы и утечка памяти

https://khsoft.ru/li — Индикатор раскладки для Windows https://t.me/khsoft — Канал ХаритоновСофт ТГ: https://t.me/classic_ivan_blog DZ: https://dzen.ru/zapominai VK: https://vk.com/video/@classic_ivan RT: https://rutube.ru/channel/31567846/ YT: https://youtube.com/c/zapominai TT: http://asdf123.ru 00:00 Проблема с индикаторами • Индикаторы плавно следуют за курсором, но при частом переключении раскладки начинают лагать. • Проблема возникает не только при переключении, но и при длительном удержании клавиши. 00:58 Дополнительные проблемы • При редактировании видео обнаружена нестабильность цвета панели задач. • Глюк проявляется только на одном мониторе. 01:58 Анализ кода • Убрана очередь запросов к системному индикатору для устранения гонок. • После изменений индикаторы начали лагать без переключения раскладки. 02:45 Профилирование и ограничения • Использован профилировщик для выявления проблемы. • Обнаружено, что ограничение количества запусков вызывает тормоза. 04:42 Влияние на производительность • Удаление локера и механизма очереди улучшило производительность, но индикатор всё равно лагает при спаме переключений. • Высокая нагрузка на процессор при печати. 06:34 Эксперименты с задержкой • Увеличение задержки ограничителя до 500 мс снижает нагрузку на процессор. • Проверка задержки в 250 мс также эффективна, но вызывает задержку при переключении. 09:38 Новая проблема • При переключении по клавишам иногда пропускается смена раскладки из-за ограничителя. • Необходимо добавить механизм для гарантированного выполнения вызовов в очереди. 10:56 Решение проблемы • Предлагается использовать две очереди для обработки событий кейдаун. • Второй вызов должен выполняться с задержкой в 120 мс для гарантированного обновления индикатора. 12:20 Проблемы с проверкой раскладки • Обсуждение проблем с проверкой раскладки по нажатию клавиш. • Упоминание о необходимости использования двух проверок: с ограничителем и без него. • Идея использования двух очередей вызовов для оптимизации работы. 13:19 Реализация двух очередей • Описание процесса вызова проверок в двух очередях. • Необходимость создания метода, который будет принимать очередь для выполнения операций. • Подчёркивание асинхронного характера операций и использования лимитов. 14:14 Создание внутренней функции • Предложение создать внутреннюю функцию для управления лимитами. • Определение переменных для работы с лимитами: лимитер и лимитер индекс. • Реализация проверки лимитов в функции. 17:16 Тестирование системы • Запуск теста для проверки работы системы. • Обнаружение проблем с индикатором каретки и лимитами при проверке по капслоку. • Оценка нагрузки на процессор и решение об отключении второй очереди. 20:29 Стресс-тест памяти • Предложение провести стресс-тест для проверки утечки памяти. • Настройка параметров теста: отсутствие лимитов, постоянное обновление индикаторов. • Анализ потребления памяти во время теста. 23:19 Анализ результатов стресс-теста • Подтверждение роста потребления памяти при получении раскладки и индикации. • Проверка утечки памяти при форсном обновлении индикаторов. • Выявление возможных источников утечки памяти в коде. 25:48 Проверка гипотез об утечке памяти • Анализ кода на предмет возможных источников утечки памяти. • Проверка создания нового битмапа и других операций, связанных с обновлением формы. • Продолжение тестирования для выявления конкретных мест утечки. 26:24 Проверка гипотезы об утечке памяти • Удаление элементов интерфейса, таких как курсоры и каретка, для проверки утечки памяти. • Запуск приложения и измерение потребления памяти: 87 МБ. • Отключение индикаторов курсора и каретки, продолжение тестирования. 27:17 Повторные тесты с отключёнными индикаторами • Перекомпиляция и запуск приложения с отключёнными индикаторами. • Проверка потребления памяти при выводе индикаторов с лимитом. • Наблюдение за изменением потребления памяти при переключении индикаторов. 28:15 Стресс-тест и анализ результатов • Проведение стресс-теста, измерение потребления памяти: 89 МБ. • Добавление переключения индикаторов для более точного анализа. • Продолжение стресс-теста, потребление памяти растёт, но не освобождается. 30:11 Использование профилировщика • Анализ потребления памяти с помощью профилировщика. • Наблюдение за всплесками потребления памяти при переключении индикаторов. • Подтверждение, что краш-тест прошёл без значительного роста потребления памяти. 31:32 Заключение и планы на будущее • Гипотеза об утечке памяти из-за отсутствия ограничителя по времени. • Устранение багов, связанных с панелью мигания и раскладкой по капсу. • Подготовка тестовой версии с исправлениями для проверки утечки памяти. • Благодарность зрителям и прощание.

Иконка канала zapominai
3 подписчика
12+
10 просмотров
5 месяцев назад
12+
10 просмотров
5 месяцев назад

https://khsoft.ru/li — Индикатор раскладки для Windows https://t.me/khsoft — Канал ХаритоновСофт ТГ: https://t.me/classic_ivan_blog DZ: https://dzen.ru/zapominai VK: https://vk.com/video/@classic_ivan RT: https://rutube.ru/channel/31567846/ YT: https://youtube.com/c/zapominai TT: http://asdf123.ru 00:00 Проблема с индикаторами • Индикаторы плавно следуют за курсором, но при частом переключении раскладки начинают лагать. • Проблема возникает не только при переключении, но и при длительном удержании клавиши. 00:58 Дополнительные проблемы • При редактировании видео обнаружена нестабильность цвета панели задач. • Глюк проявляется только на одном мониторе. 01:58 Анализ кода • Убрана очередь запросов к системному индикатору для устранения гонок. • После изменений индикаторы начали лагать без переключения раскладки. 02:45 Профилирование и ограничения • Использован профилировщик для выявления проблемы. • Обнаружено, что ограничение количества запусков вызывает тормоза. 04:42 Влияние на производительность • Удаление локера и механизма очереди улучшило производительность, но индикатор всё равно лагает при спаме переключений. • Высокая нагрузка на процессор при печати. 06:34 Эксперименты с задержкой • Увеличение задержки ограничителя до 500 мс снижает нагрузку на процессор. • Проверка задержки в 250 мс также эффективна, но вызывает задержку при переключении. 09:38 Новая проблема • При переключении по клавишам иногда пропускается смена раскладки из-за ограничителя. • Необходимо добавить механизм для гарантированного выполнения вызовов в очереди. 10:56 Решение проблемы • Предлагается использовать две очереди для обработки событий кейдаун. • Второй вызов должен выполняться с задержкой в 120 мс для гарантированного обновления индикатора. 12:20 Проблемы с проверкой раскладки • Обсуждение проблем с проверкой раскладки по нажатию клавиш. • Упоминание о необходимости использования двух проверок: с ограничителем и без него. • Идея использования двух очередей вызовов для оптимизации работы. 13:19 Реализация двух очередей • Описание процесса вызова проверок в двух очередях. • Необходимость создания метода, который будет принимать очередь для выполнения операций. • Подчёркивание асинхронного характера операций и использования лимитов. 14:14 Создание внутренней функции • Предложение создать внутреннюю функцию для управления лимитами. • Определение переменных для работы с лимитами: лимитер и лимитер индекс. • Реализация проверки лимитов в функции. 17:16 Тестирование системы • Запуск теста для проверки работы системы. • Обнаружение проблем с индикатором каретки и лимитами при проверке по капслоку. • Оценка нагрузки на процессор и решение об отключении второй очереди. 20:29 Стресс-тест памяти • Предложение провести стресс-тест для проверки утечки памяти. • Настройка параметров теста: отсутствие лимитов, постоянное обновление индикаторов. • Анализ потребления памяти во время теста. 23:19 Анализ результатов стресс-теста • Подтверждение роста потребления памяти при получении раскладки и индикации. • Проверка утечки памяти при форсном обновлении индикаторов. • Выявление возможных источников утечки памяти в коде. 25:48 Проверка гипотез об утечке памяти • Анализ кода на предмет возможных источников утечки памяти. • Проверка создания нового битмапа и других операций, связанных с обновлением формы. • Продолжение тестирования для выявления конкретных мест утечки. 26:24 Проверка гипотезы об утечке памяти • Удаление элементов интерфейса, таких как курсоры и каретка, для проверки утечки памяти. • Запуск приложения и измерение потребления памяти: 87 МБ. • Отключение индикаторов курсора и каретки, продолжение тестирования. 27:17 Повторные тесты с отключёнными индикаторами • Перекомпиляция и запуск приложения с отключёнными индикаторами. • Проверка потребления памяти при выводе индикаторов с лимитом. • Наблюдение за изменением потребления памяти при переключении индикаторов. 28:15 Стресс-тест и анализ результатов • Проведение стресс-теста, измерение потребления памяти: 89 МБ. • Добавление переключения индикаторов для более точного анализа. • Продолжение стресс-теста, потребление памяти растёт, но не освобождается. 30:11 Использование профилировщика • Анализ потребления памяти с помощью профилировщика. • Наблюдение за всплесками потребления памяти при переключении индикаторов. • Подтверждение, что краш-тест прошёл без значительного роста потребления памяти. 31:32 Заключение и планы на будущее • Гипотеза об утечке памяти из-за отсутствия ограничителя по времени. • Устранение багов, связанных с панелью мигания и раскладкой по капсу. • Подготовка тестовой версии с исправлениями для проверки утечки памяти. • Благодарность зрителям и прощание.

, чтобы оставлять комментарии