Как стать автором
Обновить

Комментарии 11

Раз пошла такая пьянка, то просто функцию вызывать с возвращаемым значением почему уж не проверили? Q_INVOKABLE.
А чем оно от слота отличается кроме как номером в сигнатуре?
Хм, проверим и добавим в статью результаты.
НЛО прилетело и опубликовало эту надпись здесь
Тест проводился для самой, так сказать, последней на данный момент версии — Qt 5.0.1 for Windows 32-bit (MinGW 4.7, 823 MB)
Почему QtQuick 1.1? В Qt Creator 2.6.2 есть проблемы с дизайнером. По крайней мере мне дизайнер любезно сообщает, что QtQuick 2.0 он пока еще не знает. Не будите же вы в своих проектах элементы вручную в коде позиционировать, нет, можно, конечно, но как по мне, лучше уж немного посидеть на QtQuick 1.1.
НЛО прилетело и опубликовало эту надпись здесь
Ну дак это просто замечательно, что Вы умеете все собирать сами. Как именно это относится к статье? Вам не понравилось, что использовался QtQuick 1.1? Создал проект 2.0. Накидал пару перечисленных способов, результаты относительно друг друга не изменились, но затраченное время пропорционально возросло. Например, для слота, возвращающего значение, ушло примерно 18 мс.
> В Qt 5 сигналы\слоты быстрее должны работать
Они, может и должны, но получается совсем на оборот. И на погрешность тут уже не сослаться. Ибо разница достаточно заметна и стабильна.
Что-то как-то это все странно очень выглядит.

Во-первых, 10 мс для одного вызова — это оочень много. Qt может переваривать до нескольких тысяч meta-вызовоов в секунду (без QML, правда).

Во-вторых, при использовании сигналов/слотов необходимо совершить 2 meta-вызова, а при прямом вызове функции — один. То есть, по идее, в первых двух случаях работы в 2 раза больше. А время отличается на несколько процентов всего лишь.

Все-это наводит на мысль, что тормозит «что-то еще», а не механизм meta-вызовов.
Приведенные миллисекунды — это сумма для 20 вызовов, как было сказано в самой статье. Время, требуемое для одного вызова измеряется в микросекундах (самая последняя цифра на картинках с результатами). Именно сумма для 20 вызовов в подводе итогов используется для большей наглядности.
Извиняюсь, не досмотрел. Тогда это больше похоже на правду.

Вопрос же, почему вызов одной функции не в 2 раза быстрее, чем вызов двух, тем не менее, остается открытым.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории