1. C++ / Говнокод #26020

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    Дали тестовое задание.
    Написать хеш таблицу с открытой адресацией. Главное качество, а не скорость, сказали.
    Реализовал на C++.
    Самая тягомотина - это тестирование многопоточности.
    Есть операции: 
    find, equalRange, operator [] - тот же equalRange, но возвращает все найденные вхождения, insert, remove, extend, size, capacity.
    
    И вот надо каждую относительно другой проверять.  
    Только это выходит (9 - 1)^2 тестов. Помимо остальных, уже реализованных.
    
    у меня проверка на значения только в операциях поиска относительно вставки, то бишь, нашелся ли в многопоточном исполнении элемент, или нет.
    относительно удаления проверять - это муторно, потому что после удаления на той же позиции встает соседняя пара, и это случайно, проверено 
    экспериментально.
    
    Сойдет ли просто проверять время блокировки (shared_lock, и lock_guard) 
    каждого параллельного текущему потоку относительно времени блокировки\старта\окончания блокировки текущего?
    кроме связки (access - insert)?
    Тем более, что операции записи\чтения проверяются в немногопоточном исполнении?

    Запостил: OlegUP, 08 Ноября 2019

    Комментарии (31) RSS

    • показать все, что скрытоvanished
      Ответить
    • Просто, если тестировать только тайминги старта\окончания\блокировки.
      То выходит, что я напишу тесты для std-шных классов блокировки и shared мьютексов.
      Ответить
    • запускаешь 5 инсертов из 5 потоков, ждешь пока потоки отработают и проверяешь что в хеш добавилась только 1 запись.

      и все остальное в таком-же духе
      Ответить
      • 5 записей.
        Поток выполнится в любом случае.
        Моя реализация соответствует unordered_multimap.
        Ответить
    • > Дали тестовое задание.
      > Написать хеш таблицу с открытой адресацией. Главное качество, а не скорость, сказали.

      Там многопоточность-то в тестовом задании точно была?
      Я в плюсах нихуя не соображаю, но зачем мьютексы, если можно всё реализовать на optimistic locking?
      Ответить
    • ТС год не писал на С++, а тут ему дали тестовое задание про блять переизобретение более лучшей хешмапы, которое он делает уже полтора месяца (заказчика это, кстати, не смущает?). По-моему, тут проблемы побольше, чем непротестированная многопоточность
      Ответить
    • Блядь, как всё сложно. Поэтому я за "PHP", в котором есть влажненький "array".
      Ответить

    Добавить комментарий