LINUX.ORG.RU

Qt Signal/Slot посчитать

 , ,


0

2

Добрый день!

Пару дней назад разбирался со следующей ситуацией. После выполнения одной и той же операции несколько раз подряд, программа начинала заметно подтормаживать. Оказалось, что при каждом вызове происходил connect к слоту без последующего disconnect-а.

Так собственно и вопрос. Как можно отловить такие ситуации?

P.S. Можно, конечно, и руками, но это достаточно долго.



Последнее исправление: Sakura (всего исправлений: 1)

В Qt 4.6 появился параметр connect Qt::UniqueConnection, который не дает плодиться связям сигнал-слот, если ты подключаешь несколько раз одинаковые.

Если у тебя Qt старше, просто вызывай disconnect перед connect. А вообще connect'ы надо устанавливать в основном при создании объектов и потом уже не трогать.

grondek
()
Ответ на: комментарий от grondek

Тут не совсем в этом вопрос. Про UniqueConnection я прочитал и воспользовался. disconnect перед connect тоже выход, но это дополнительный минус производительности.

А вообще я скорее всего кривовато выразился. Меня интересует возможность проверить наличие таких «тормозящих» connect-ов в проекте. Что-то типа анализатора. Или надстройки над Qt.

Sakura
() автор топика
Ответ на: комментарий от CrossFire

Немного неправильно меня поняли, ответил выше

Sakura
() автор топика
Ответ на: комментарий от Sakura

Профайлер выводит частоту используемых тобой функций. Можно узкие места так искать.

UVV ★★★★★
()
Ответ на: комментарий от Sakura

А ты думаешь проверка наличия коннекта - это не минус в производительности? Тебе желательно пересмотреть архитектуру, раз такие дела, и исключить возможность повторного вызова кода с коннектом.

panter_dsd ★★★★
()
Ответ на: комментарий от UVV

valgrind не профилер валенка, Callgrind

Valgrind - это пакет инструментов, в который входит и callgrind. Об этом даже на офф.сайте указано http://valgrind.org/

anonymous8 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.