Persistent Vector for Elixir
Installation
Add persistent_vector
to your list of dependencies in mix.exs
:
def deps do
[
{:persistent_vector, "~> 0.1.3"}
]
end
Description
PersistentVector
is an array-like collection of values indexed by contiguous 0-based integer index.
PersistentVector
optimizes the following operations:
- Get element count
- Lookup element by index
- Update element by index
- Adding new element to the end
- Removing element from the end
- Enumeration
Get count operation is O(1)
, most others are O(log32(N))
.
PersistentVector
is implemented as a trie with 32-way branching at each level and uses structural sharing for updates.
All ideas are borrowed directly from Clojure, yet the implementation (and all the bugs) are my own.
More info
See Benchmarks