Based on EQueue
by Ben Falk with some
additions and improvements.
An Elixir wrapper around the Erlang optimized queue
that supports the FIFO,
first-in first-out, pattern. This is useful is when you can't predict when an
item needs to be taken or added to the queue. Use this instead of using ++
or
double reversing lists to add items to the "back" of a queue.
This is the results of pushing 100k elements onto a list and poping every 13th element off of it ( over 100x faster! )
# mix run test/performance.exs
IO.puts "#{inspect :timer.tc(EQ.Performance, :test_queue, [[]])}"
#> {21163189, :ok}
IO.puts "#{inspect :timer.tc(EQ.Performance, :test_queue, [EQ.new])}"
#> {189986, :ok}
-
Add EQ to your list of dependencies in
mix.exs
:def deps do [{:e_q, "~> 1.0.0"}] end