В любом случае, просто чтобы поделиться с людьми, это две интересные записи в блоге о реализации Persistent Vectors в Scala с использованием Tries. Они также упоминают реализацию Clojure, а также новый IntMap в последних выпусках Scala.
http://www.codecommit.com/blog/scala/implementing-persistent-vectors-in-scala
http://www.codecommit.com/blog/scala/more-persistent-vectors-performance-analysis
Для этих структур данных я протестировал ключ как целые числа, но пока не строки. Поскольку мое настоящее приложение будет использовать строки в качестве ключей, я не уверен, будет ли реализация более эффективной, чем Hash Map. Что если я использую HashCode строки в качестве ключа, а затем использую постоянный вектор для поддержки карты? Я буду использовать 32-полосную схему для реализации Постоянного вектора. Я думаю, что столкновение будет очень редким, и память будет расходоваться только соответственно. Но я не уверен, сколько нужно копировать в обновлениях.
Я скоро опубликую свои результаты.