Russian Qt Forum
Апрель 26, 2024, 08:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Накладные расходы слот-сигнал  (Прочитано 10350 раз)
vulko
Гость
« Ответ #15 : Октябрь 28, 2014, 11:34 »

Человек спросил какие проблемы могут быть если на частоте сотни в секунду в теле слота выполняется помещение а контейнер.

Наговнокодил кривой пример и продолжает из себя эксперта строить...  Смеющийся

Я понимаю что у автора руки из жопы растут, но все же, только полный идиот будет делать помещение в контейнер не по ссылке, а копированием, когда речь идет о десятках тысячах таких операций в секунду.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #16 : Октябрь 28, 2014, 16:23 »

Но начинать надо "от печки", т.е. с выяснения той частоты где появляется нужда в чем-то более интеллектуальном чем вязка слот-сигнал веников  Улыбающийся
Полностью согласен. Кто готов выяснить значение частоты? Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Октябрь 29, 2014, 09:20 »

Полностью согласен. Кто готов выяснить значение частоты? Улыбающийся
Так его уже выяснили. Напр если тело слота исполняется 20K/сек, то при работе с частотой 15K все хорошо, оверхед невелик. При меньшем времени исполнения слота оверхед будет расти и наоборот.

Понятно что если мы помещаем в очередь больше событий чем обработчик успевает прожевать, то очередь будет неуклонно расти, это неизбежно, оверхед слот/сигнала здесь ни при чем. Да, и Qt очередь использует стандартную схему (Q)WaitCondition.

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

Предлагаю такой вывод: основанием для отказа от (удобного) обмена с помощью слот/сигнал могут служить:

 - высокие требования к пропускной способности очереди (типа 30-40К/сек)
 - перекосы в планировании типа 10 пишут - 1 читает, также при приличной частоте   

И то и другое не так уж просто получить Улыбающийся Напр для первого напрашивается вопрос: а чего такую мелкоту гнать через очередь в таком количестве?
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #18 : Октябрь 29, 2014, 22:32 »

Переформулирую и конкретизирую вопрос. Частота наполнения очереди - 10 раз в секунду, размер каждого элемента от 128 до 256 кБайт, частота чтения из неё - от 10 до 80 раз в секунду, потоков-писателей 8 шт., читатели (X шт.) объединены в пулы, пусть их количество (пулов в смысле) равно 16. Продолжительность обработки каждого элемента очереди каждым читателем - 1 мс, процессор 24-х ядерный. Чему равно Xmax при требуемой общей загруженности CPU в среднем не более 50%? Без реального моделирования это можно оценить?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Октябрь 30, 2014, 09:23 »

Переформулирую и конкретизирую вопрос. Частота наполнения очереди - 10 раз в секунду, размер каждого элемента от 128 до 256 кБайт, частота чтения из неё - от 10 до 80 раз в секунду, потоков-писателей 8 шт., читатели (X шт.) объединены в пулы, пусть их количество (пулов в смысле) равно 16. Продолжительность обработки каждого элемента очереди каждым читателем - 1 мс, процессор 24-х ядерный. Чему равно Xmax при требуемой общей загруженности CPU в среднем не более 50%? Без реального моделирования это можно оценить?
При конкретно 16 читателях - полагаю ровным счетом ничего не грозит, частота слишком мала. Наверное Вы говорите об обычной/стандартной очереди на (Q)WaitCondition - в случае слот/сигнал не вижу как сделать "много читателей". Если не так понял - поправьте.

Сколько ниток-читателей выдержит? Здесь не скажу, надо проверять. Но в любом случае плодить нитки "на каждого" плохо. Не совсем ясно что здесь "пул".
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.