README.md
# Cbuf
A [circular buffer](https://en.wikipedia.org/wiki/Circular_buffer) based on Erlang's `array` module.
## Installation
```elixir
def deps do
[
{:cbuf, "~> 0.1.0"}
]
end
```
See the docs at [https://hexdocs.pm/cbuf](https://hexdocs.pm/cbuf) for usage information.
## Benchmarks
To run the benchmarks:
```
$ mix run bench.exs
```
```
clark$> mix run bench.exs
Operating System: macOS
CPU Information: Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz
Number of Available Cores: 8
Available memory: 16 GB
Elixir 1.6.0
Erlang 20.2.2
Benchmark suite executing with the following configuration:
warmup: 2 s
time: 5 s
parallel: 1
inputs: none specified
Estimated total run time: 1.40 min
Benchmarking insert large...
Benchmarking insert medium...
Benchmarking insert small...
Benchmarking insert xlarge...
Benchmarking new large...
Benchmarking new medium...
Benchmarking new small...
Benchmarking new xlarge...
Benchmarking to_list large...
Benchmarking to_list medium...
Benchmarking to_list small...
Benchmarking to_list xlarge...
Name ips average deviation median 99th %
new small 8.18 M 0.122 μs ±274.93% 0.100 μs 0.42 μs
new medium 7.13 M 0.140 μs ±148.68% 0.120 μs 0.41 μs
new large 6.17 M 0.162 μs ±144.69% 0.140 μs 0.46 μs
new xlarge 4.48 M 0.22 μs ±3125.43% 0.20 μs 0.80 μs
insert small 3.50 M 0.29 μs ±1990.99% 0.20 μs 1 μs
insert medium 2.52 M 0.40 μs ±1533.98% 0.30 μs 1.20 μs
insert large 1.91 M 0.53 μs ±888.86% 0.40 μs 1.50 μs
insert xlarge 1.57 M 0.64 μs ±627.99% 0.60 μs 1.70 μs
to_list small 1.04 M 0.97 μs ±320.93% 0.80 μs 2.40 μs
to_list medium 0.0963 M 10.38 μs ±365.00% 9 μs 25 μs
to_list large 0.00865 M 115.66 μs ±24.56% 107 μs 222 μs
to_list xlarge 0.00071 M 1416.13 μs ±18.80% 1334 μs 2576.46 μs
Comparison:
new small 8.18 M
new medium 7.13 M - 1.15x slower
new large 6.17 M - 1.32x slower
new xlarge 4.48 M - 1.82x slower
insert small 3.50 M - 2.34x slower
insert medium 2.52 M - 3.25x slower
insert large 1.91 M - 4.29x slower
insert xlarge 1.57 M - 5.22x slower
to_list small 1.04 M - 7.91x slower
to_list medium 0.0963 M - 84.91x slower
to_list large 0.00865 M - 946.01x slower
to_list xlarge 0.00071 M - 11582.50x slower
```