Re[2]: Вопрос по boost lockfree queue
От: Engler Беларусь  
Дата: 26.04.15 16:00
Оценка:
A>потому что вы считаете странное. Что хотели посчитать то?
E> Пытаюсь замерить среднее время сообщения в очереди.
Если говорить другими словами, то Latency.

A> Например, если consumer начнёт работать на полсекунды позже чем producer, то результат будет ещё более феерический

Если consumner начнет работать на полсекунды позже, то должно получится что сообщение пролежит в очередит на пол секунды дольше, и всего то.

A>, даже если producer и consumer отработают за 0 секунд.

Я наверное, не совсем понимаю, что вы имеете ввиду. Допутсим.
Запустили Producer. Он сгенерировал сообщение. Записали в него, что оно сгенерировалось во время t1.
Запустили Consumer (путь даже не секунду позже ). Вычитали из очереди сообщение. Получили текущее время t2.
t2 — t1 = время, сколько соощение провело в очереди.

A>как раз таки наоборот, real time уменьшился фактически на величину sys time, а сам sys time ушёл в ноль, что логично. В чём странности?

Смотрите, что я имею ввиду:

boost::lockfree::queue is lockfree
produced 2000000 objects.
consumed 2000000 objects.
Total time 67803937295 ns.
Messages 33901 ns per msg

real 0m0.541s
user 0m1.603s
sys 0m0.002s

Total time это то что я насуммировал счетчиком.
67,803,937,295 наносекунд = 67.80 секунд. Т.е получается, что время считается где-то неправильно.
А само приложение отработало по time за 1.6 секунды.
И так считается БЕЗ locka.

а если Lock ставить, то суммируемое время и время утилитой совпадают. Вот как раз в этом странность и заключается.
Отредактировано 26.04.2015 16:02 Engler . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.