Соединения Qt Signal/Slot вызывают увеличение использования ЦП приложением?

У меня есть приложение с графическим интерфейсом, разработанное в Qt для встроенной системы, в моем приложении присутствует много сигналов/слотов Qt::queuedconnections. После запуска моего приложения в течение длительного периода времени я наблюдаю, что использование ЦП моей системы линейно увеличивается с течением времени, что заставляет мое приложение реагировать медленнее.

Я не отключаю эти соединения сигналов/слотов. Увеличение использования ЦП связано с динамическим созданием сигналов/слотов? Есть ли какой-либо метод или способ проверить память сигнала/слота или использование ЦП. ?


person user12345    schedule 09.06.2015    source источник
comment
Что говорит ваш профайлер?   -  person cmannett85    schedule 09.06.2015
comment
Сигнал/слоты — это простые вызовы функций (если они имеют тип DirectConnection, который используется по умолчанию для однопоточного использования), в зависимости от того, что делают функции, это может привести к линейному увеличению загрузки ЦП. Если количество объектов или количество подключений со временем увеличивается, может увеличиться и загрузка ЦП. Попробуйте с профилировщиком посмотреть, где тратится время.   -  person Frank Osterfeld    schedule 09.06.2015
comment
звучит как утечка памяти для меня.   -  person GPPK    schedule 09.06.2015
comment
Да, это была утечка памяти. Я понял. Спасибо всем за ваши ценные ответы.   -  person user12345    schedule 08.10.2015


Ответы (3)


Я сомневаюсь, что замедление происходит из-за ваших сигналов/слотов, поскольку (цитата из документа):

Соединение сигнал-слот удаляется, когда любой из задействованных объектов уничтожается.

person Thomas Ayoub    schedule 09.06.2015

Некоторое событие (например, событие рисования) может вызываться в цикле, что приводит к увеличению загрузки ЦП. Проверьте, не связано ли какое-либо событие с «соединениями». Как и другие ответы выше, сигнал/слоты не приводят к увеличению использования ЦП.

person Sudz    schedule 24.08.2015

Это была проблема с утечкой памяти, и она не была связана с соединениями сигнала/слота, как я подозревал. Я понял это с помощью valgrind.

person user12345    schedule 08.10.2015