Чёрная магия, не иначе. Несколько раз возвращался к коду на неделе и так и не исправил эту ошибку. Решил выписать все теории и проверить залпом.
Проблема не Оперативной Памяти. Как вы могли заметить, я держу в памяти все ключи и значения. Начал их генерировать на ходу, стало хуже.
Проблема не в том, что размер данных слишком большой. Поставил 100 байт, но 30 000 000 повторов, стало ещё хуже (оно и логично).
Дальше я заметил крайне странную ситуацию. Сначала я прогнал тест на Windows и получил 2.5 секунды на вставку и 17 секунд на получение (при 100 байт), однако проблема этого теста в том, что IDE пытается заиндексировать новые файлы, так что я и не стал проверять на Windows неделю назад (работал в Docker), но тут решил проверить. Получилось (на 1000 байт) 10.8 секунд на запись и 24 секунды на получение. Этот тест вызвал у меня ещё больше вопросов.
Я программист с учебным опыт около полутора лет и не могу это объяснить. Может кто-нибудь объяснить такую ситуацию?