код теста для spsc queue
От: NETFlow  
Дата: 31.03.15 08:41
Оценка:
Вопрос к тем кто занимался spsc queue различных реализаций.
Пока деталей раскрывать не хочу, но мне кажется я сделал новый алгоритм.
Написал я на cи++ (6 комбинаций) и на си (6 комбинаций, сейчас буду доделывать).
Типа очередей два ограниченные/не ограниченные.
Мне нужен код теста для spsc очереди (проверки того, что из очереди ничего не теряется), для проверки своего "велосипеда".
Если пройдет тесты, то я на основе этого алгоритма сделаю ещё mpsc|spmc|mpmc.
Любителям писать код в студию, прошу воздержаться, мне надо проверить что я прав сначала, а потом уже решу позориться или нет.

Результаты бенчмарков использовался clock()
Сокращения я думаю должны понять все
st — один поток
lf_spsc — 2 потока
ca — circular array (ограниченная очередь на N элементов)
ll — linked list (неограниченная очередь, 1 элемент в узле)
ull — linked list + circular array (неограниченная очередь, по N элементов в узле)

*_p_t в узлах храним указатель(и) на значение(я)
          st_queue_ca_p_t        699
          st_queue_ll_p_t       1374
         st_queue_ull_p_t        743
     lf_spsc_queue_ca_p_t       1766
     lf_spsc_queue_ll_p_t       2008
    lf_spsc_queue_ull_p_t       1632

*_v_t в узлах значение(я)
          st_queue_ca_v_t        606
          st_queue_ll_v_t        728
         st_queue_ull_v_t        221
     lf_spsc_queue_ca_v_t        221
     lf_spsc_queue_ll_v_t       1515
    lf_spsc_queue_ull_v_t        146
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.