edit: This was an April’s fools joke. However, bunny will remain functional. It’s only implemented as a thing wrapper around benchee so unless we completely break API (which I don’t see coming) it’ll remain functional. Continue reading for cute bunny pictures.
It is time for benchee to take the next step in its evolution as one of the prime benchmarking libraries. Going forward benchee will be called bunny!

We waited for this very special day to announce this very special naming change – what better day to announce something is being named bunny than Easter Sunday?
It is available on hex.pm now!
But why?
We think this is an abstraction that’s really going to offer us all the flexibility that we’re going to need for future development. As we approach 1.0, we wanted to get the API just right.
This is true courage.
We also haven’t been exactly subtle dropping hints that this naming change was coming. For once I have described benchmarking as bunnies eating food on numerous occasions (each bunny is a function that tries to eat it’s input as fast as it can!). Other than that, the frequently occurring bunny pictures (or even gifs) in benchee Pull Requests could have been a hint.
Also, eating is what they do best:

For now bunny still works a lot like benchee. However, it exposes a better and more expressive API for your pleasure. You know, bunny can’t only run like the good old benchee. No! Bunny can also sleep, hop, eat and jump!
This all comes with your own personal bunny assistant that helps you benchmark:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| list = Enum.to_list(1..10_000) | |
| map_fun = fn(i) -> [i, i * i] end | |
| Bunny.eat(%{ | |
| "flat_map" => fn -> Enum.flat_map(list, map_fun) end, | |
| "map.flatten" => fn -> list |> Enum.map(map_fun) |> List.flatten end | |
| }) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| tobi@speedy ~/github/bunny $ mix run samples/eat.exs | |
| Bunny will take care of that for you! | |
| ( Y) | |
| ( . .) | |
| o(") (") | |
| Operating System: Linux | |
| CPU Information: Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz | |
| Number of Available Cores: 8 | |
| Available memory: 15.61 GB | |
| Elixir 1.6.3 | |
| Erlang 20.2 | |
| Benchmark suite executing with the following configuration: | |
| warmup: 2 s | |
| time: 5 s | |
| parallel: 1 | |
| inputs: none specified | |
| Estimated total run time: 14 s | |
| Benchmarking flat_map… | |
| Benchmarking map.flatten… | |
| Name ips average deviation median 99th % | |
| flat_map 2.23 K 448.25 μs ±14.33% 430 μs 790 μs | |
| map.flatten 1.17 K 857.84 μs ±21.57% 796 μs 1426.98 μs | |
| Comparison: | |
| flat_map 2.23 K | |
| map.flatten 1.17 K – 1.91x slower | |
| Bunny is done! | |
| () () | |
| (* *) | |
| o( 0 ) |
After all this hard work, the bunny needs to sleep a bit though:

This is clearly better than any other (benchmarking) library out there. What are you waiting for? Go and get bunny now. Also, I mean… just LOOK AT THEM!


