- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
Дали тестовое задание.
Написать хеш таблицу с открытой адресацией. Главное качество, а не скорость, сказали.
Реализовал на C++.
Самая тягомотина - это тестирование многопоточности.
Есть операции:
find, equalRange, operator [] - тот же equalRange, но возвращает все найденные вхождения, insert, remove, extend, size, capacity.
И вот надо каждую относительно другой проверять.
Только это выходит (9 - 1)^2 тестов. Помимо остальных, уже реализованных.
у меня проверка на значения только в операциях поиска относительно вставки, то бишь, нашелся ли в многопоточном исполнении элемент, или нет.
относительно удаления проверять - это муторно, потому что после удаления на той же позиции встает соседняя пара, и это случайно, проверено
экспериментально.
Сойдет ли просто проверять время блокировки (shared_lock, и lock_guard)
каждого параллельного текущему потоку относительно времени блокировки\старта\окончания блокировки текущего?
кроме связки (access - insert)?
Тем более, что операции записи\чтения проверяются в немногопоточном исполнении?
guest8 08.11.2019 15:55 # −999
OlegUP 08.11.2019 16:02 # 0
OlegUP 08.11.2019 16:07 # 0
А то так замаюсь разгребать эти 8^2 тестов.
gost 08.11.2019 16:28 # 0
https://www.sqlite.org/testing.html
OlegUP 08.11.2019 16:46 # 0
Booster 08.11.2019 22:51 # 0
Desktop 08.11.2019 23:37 # 0
https://assets.amuniversal.com/c8253cc0db9a012e2fae00163e41dd5b
guest8 09.11.2019 02:32 # −999
OlegUP 08.11.2019 15:55 # +1
То выходит, что я напишу тесты для std-шных классов блокировки и shared мьютексов.
Her 08.11.2019 17:34 # 0
и все остальное в таком-же духе
OlegUP 08.11.2019 17:54 # 0
Поток выполнится в любом случае.
Моя реализация соответствует unordered_multimap.
Fike 08.11.2019 19:01 # 0
> Написать хеш таблицу с открытой адресацией. Главное качество, а не скорость, сказали.
Там многопоточность-то в тестовом задании точно была?
Я в плюсах нихуя не соображаю, но зачем мьютексы, если можно всё реализовать на optimistic locking?
Fike 08.11.2019 19:14 # 0
тебе нужно не декартово произведение тестов, а просто несколько тредов, которые по-всякому трахают хэшмапу, а в конце проверяются инварианты.
guest8 08.11.2019 19:20 # −999
Fike 08.11.2019 19:29 # 0
Только всё равно ж я просто предлагаю ему нормальное решение для того что он делает, а не гарантирую что-то
guest8 08.11.2019 19:34 # −999
Fike 08.11.2019 19:37 # 0
guest8 08.11.2019 19:43 # −999
guest8 09.11.2019 13:32 # −999
guest8 09.11.2019 13:42 # −999
MAPTbIwKA 09.11.2019 15:35 # 0
велика вероятность того, что рано или поздно он найдет проблему
да
bormand 10.11.2019 10:55 # +1
gost 10.11.2019 11:31 # +1
Привет, Борманд!
guest8 10.11.2019 11:34 # −999
bormand 10.11.2019 13:35 # 0
gost 10.11.2019 14:38 # +2
koshka_Sviborga 10.11.2019 12:04 # +1
Konardinho 10.11.2019 12:08 # 0
Desktop 08.11.2019 19:38 # +4
guest8 08.11.2019 19:42 # −999
Konardinho 09.11.2019 22:16 # +1