HDR Histogram 0.2.3 High Dynamic Range Histogram library for Erlang/OTP

By brucify | Published: February 27, 2015

View original article

Click here to add news on Erlang Central and get promoted on @ErlangCentral

Hi folk,

A high dynamic range histogram is one that supports recording and analyzing sampled data points across a configurable range with configurable precision within that range. The precision is expressed as a number of significant figures in the recording.This HDR histogram implementation is designed for recording histograms of value measurements in latency sensitive environments. Although the native recording times can be as low as single digit nanoseconds there is added overhead in this wrapper/binding due to both the frontend overhead of converting from native C to the NIF interface, and the erlang overhead incurred calling into the NIFs. C’est la vie, I suppose.

A distinct advantage of this histogram implementation is constant space and recording (time) overhead with an ability to recycle and reset instances whilst reclaiming already allocated space for reuse thereby reducing allocation cost and garbage collection overhead in the BEAM where repeated or continuous usage is likely. For example, a gen_server recording metrics continuously and resetting and logging histogram dumps on a periodic or other windowed basis.

Since announced at 0.1.0:
* Moved to the HDR Histogram organization and is now part of that project
* Histograms can now be easily iterated by record, linearly, logarithmically and by percentile
* Histograms can now be serialized to and deserialized from zlib compressed or raw binary
* Automated continuous integration tests via travis covering R16B02 .. R17.3
* Gitter service. This is a chat room where you’ll find expertise on HDR Histogram in various flavors (Java, C, C#, Erlang …) from authors, contributors and users.
* Thanks. Heinz Gies of Project FIFO for contributing a patch. Mark Allen of Basho for feedback that improved docs and will influence the next version 0.3.