![]() |
|
|
![]()
|
|
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
||||
|
||||
| andrew_121 |
|
||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Устройте сравнительный тест. Я писал, и сейчас поддерживаю клиент-серверную часть коммерческой сети. Один сервер которой поддерживает 10 000 клиентов. И сервера обьеденены в подобие кластера. Так вот. Серверную часть написал исключительно на бусте, из-за того, что в ней все есть. Клиентская часть полностью на Кут. Сервер, уже при трех тысячах с лишним клиентов, отнимал 60-70 процентов ресурсов проца. Пересобрал его интеловским компилером, нагрузка составила 40-50 процентов. Добавлено через 2 минуты
А если нужна многопоточность + постановка в очередь? -------------------- Удалил аккаунт. Прощайте! |
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Он сказал, что у него однопоточная программа. В документации сказано
При этом также сказано, что сигналы в 10 раз медленней обычных callback'ов. Жалко не сказано про 1 сигнал и несколько тысяч слотов |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Однопоточный сервер? Т.е. Такое возможно, но смысл в таком сервере? Если однопоточный, зачем сигналы? Ладно, это останется за кадром. Да, знаю. Но на практике замечал гораздо хуже( В своем коде естественно! Завтра проведу тесты сигналов-слотов. Отпишусь о результатах. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| hsilgos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: нет Всего: 2 |
Да не. Только сигналы бустовские будут работать в одном потоке. А так и клиент и сервер многопоточные. |
|||
|
||||
| SABROG |
|
|||
![]() 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 объект) ![]() Это сообщение отредактировал(а) SABROG - 30.6.2009, 18:48 Присоединённый файл ( Кол-во скачиваний: 6 )
signalsSpeed.zip 2,62 Kb |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
SABROG, Респект!
Щас поэкспериментирую. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
На домашнем компе с 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 |
|||
|
||||
| hsilgos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: нет Всего: 2 |
-----------------------------QT----------------boost
slots(1000000) ---------206---------------391 signals(1000000)-------266---------------812 50/50(15000)-----------10703------------20250 Использовал, правда, для буста не совсем оптимальный биндинг:
Ну а вообще, QT меня удивил... |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |