<div dir="ltr">Hi folk,<div><br></div><div><span style="font-size:12.8000001907349px">A high dynamic range </span><span class="" style="font-size:12.8000001907349px">histogram</span><span style="font-size:12.8000001907349px"> 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.</span><br style="font-size:12.8000001907349px"><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">This </span><span class="" style="font-size:12.8000001907349px">HDR</span><span style="font-size:12.8000001907349px"> </span><span class="" style="font-size:12.8000001907349px">histogram</span><span style="font-size:12.8000001907349px"> implementation is designed for recording </span><span class="" style="font-size:12.8000001907349px">histograms</span><span style="font-size:12.8000001907349px"> 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 </span><span class="" style="font-size:12.8000001907349px">erlang</span><span style="font-size:12.8000001907349px"> overhead incurred calling into the NIFs. C'est la vie, I suppose.</span><br style="font-size:12.8000001907349px"><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">A distinct advantage of this </span><span class="" style="font-size:12.8000001907349px">histogram</span><span style="font-size:12.8000001907349px"> 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 </span><span class="" style="font-size:12.8000001907349px">histogram</span><span style="font-size:12.8000001907349px"> dumps on a periodic or other windowed basis.</span><br></div><div><br></div><div>Since announced at 0.1.0:</div><div><br></div><div>* Moved to the HDR Histogram organization and is now part of that project</div><div>* Histograms can now be easily iterated by record, linearly, logarithmically and by percentile </div><div>* Histograms can now be serialized to and deserialized from zlib compressed or raw binary</div><div>* Automated continuous integration tests via travis covering R16B02 .. R17.3</div><div>* 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.</div><div>* 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.</div><div><br></div><div>Where:</div><div><div>  <a href="https://github.com/HdrHistogram/hdr_histogram_erl">https://github.com/HdrHistogram/hdr_histogram_erl</a><br></div></div><div><br></div><div>Enjoy!</div></div>