Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] boost::signal, MSVC2005 
:(
    Опции темы
SABROG
Дата 30.6.2009, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(hsilgos @  30.6.2009,  00:12 Найти цитируемый пост)
В общем, несколько тысяч различных объектов должны обработать один сигнал


Ну тут даже и сигналы могут не понадобится, обычных callback'ов может хватить, разве что для удобства smile



--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
andrew_121
Дата 30.6.2009, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Цитата(hsilgos @  30.6.2009,  00:12 Найти цитируемый пост)
В общем, несколько тысяч различных объектов должны обработать один сигнал

Устройте сравнительный тест.

Я писал, и сейчас поддерживаю клиент-серверную часть коммерческой сети. Один сервер которой поддерживает 10 000 клиентов. И сервера обьеденены в подобие кластера.
Так вот. Серверную часть написал исключительно на бусте, из-за того, что в ней все есть. Клиентская часть полностью на Кут.

Сервер, уже при трех тысячах с лишним клиентов, отнимал 60-70 процентов ресурсов проца. Пересобрал его интеловским компилером, нагрузка составила 40-50 процентов.

Добавлено через 2 минуты
Цитата(SABROG @  30.6.2009,  00:22 Найти цитируемый пост)
Ну тут даже и сигналы могут не понадобится, обычных callback'ов может хватить, разве что для удобства

А если нужна многопоточность + постановка в очередь?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
SABROG
Дата 30.6.2009, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(andrew_121 @  30.6.2009,  00:26 Найти цитируемый пост)
А если нужна многопоточность + постановка в очередь? 

Он сказал, что у него однопоточная программа.

В документации сказано
Цитата

On an i586-500, you can emit around 2,000,000 signals per second connected to one receiver, or around 1,200,000 per second connected to two receivers. The simplicity and flexibility of the signals and slots mechanism is well worth the overhead, which your users won't even notice. 


При этом также сказано, что сигналы в 10 раз медленней обычных callback'ов. Жалко не сказано про 1 сигнал и несколько тысяч слотов smile


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
andrew_121
Дата 30.6.2009, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Цитата(SABROG @  30.6.2009,  00:39 Найти цитируемый пост)
Он сказал, что у него однопоточная программа.

Однопоточный сервер? smile  Это что-то новое. smile 
Т.е. Такое возможно, но смысл в таком сервере?
Если однопоточный, зачем сигналы?
Ладно, это останется за кадром.


Цитата(SABROG @  30.6.2009,  00:39 Найти цитируемый пост)
В документации сказано

Да, знаю. Но на практике замечал гораздо хуже( В своем коде естественно!
Завтра проведу тесты сигналов-слотов. Отпишусь о результатах.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
hsilgos
Дата 30.6.2009, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 26.4.2009

Репутация: нет
Всего: 2



Цитата

Однопоточный сервер?   Это что-то новое.

Да не. Только сигналы бустовские будут работать в одном потоке. А так и клиент и сервер многопоточные.
PM MAIL   Вверх
SABROG
Дата 30.6.2009, 18:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



В общем я написал небольшой бенчмарк для слотов и сигналов. Используется Qt::DirectConnection, т.е. не через цикл событий.
Сделал 3 опиции: 50/50, Slots, Signal и счетчик.

Если выбрать 50/50 и выставить значение в счетчик, то это значение делится на 2 и в итоге на каждый слот посылается такое же количество сигналов. Например 100/2 = 50 объектов, на каждый придется по 50 сигналов.
Slots - 1 сигнал и скажем 20000 слотов (объектов)
Signals - скажем 20000 сигналов на 1 объект.

На моей машине такие результаты:
50/50: 15000: 15720 ms (15 секунд, 7500 объектов на каждый из них приходится еще по 7500 сигналов)
Slots: 100000: 32ms (1 сигнал и 100к объектов, к сожалению объекты долго создаются, несколько минут.)
Signals: 1000000: 453 ms (1 лям сигналов на 1 объект)

user posted image

Это сообщение отредактировал(а) SABROG - 30.6.2009, 18:48

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  signalsSpeed.zip 2,62 Kb


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
andrew_121
Дата 30.6.2009, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



SABROG, Респект! smile  Я не успел(
Щас поэкспериментирую.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
SABROG
Дата 30.6.2009, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(andrew_121 @ 30.6.2009,  20:55)
SABROG, Респект! smile  Я не успел(
Щас поэкспериментирую.

На домашнем компе с Qt 4.5.2 и gcc 4.4.0 результат пошустрее:

50/50 - 15000 - 10234ms
slots - 1000000 - 265 ms
signals - 1000000 - 235ms

Щас буду смотреть профайлером чего так долго объекты создаются.
---
Ни gprof ни IBM Rational Purify не показывают профайлинг. Первый пустой файл выдает, второй завершает приложение не успев его показать. Мистика какая-то в коннектикуте.

Это сообщение отредактировал(а) SABROG - 1.7.2009, 11:17


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
hsilgos
Дата 30.6.2009, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 26.4.2009

Репутация: нет
Всего: 2



-----------------------------QT----------------boost
slots(1000000) ---------206---------------391
signals(1000000)-------266---------------812
50/50(15000)-----------10703------------20250

Использовал, правда, для буста не совсем оптимальный биндинг:
Код

boost::shared_ptr<Object> p(new Object);
signal.connect( boost::bind( &Object::objectSlot,p.get() ) );


Ну а вообще, QT меня удивил...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.