aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/hdr_histogram/README.md
blob: dbb56a7ae00ced6b4ad9c735b1315ba22e60d1dc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
HdrHistogram_c: 'C' port of High Dynamic Range (HDR) Histogram 
 
HdrHistogram 
---------------------------------------------- 
[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/HdrHistogram/HdrHistogram?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 
 
Windows Build: ![AppVeyor](https://ci.appveyor.com/api/projects/status/github/HdrHistogram/HdrHistogram_c) 
 
This port contains a subset of the functionality supported by the Java 
implementation.  The current supported features are: 
 
* Standard histogram with 64 bit counts (32/16 bit counts not supported) 
* All iterator types (all values, recorded, percentiles, linear, logarithmic) 
* Histogram serialisation (encoding version 1.2, decoding 1.0-1.2) 
* Reader/writer phaser and interval recorder 
 
Features not supported, but planned 
 
* Auto-resizing of histograms 
 
Features unlikely to be implemented 
 
* Double histograms 
* Atomic/Concurrent histograms 
* 16/32 bit histograms 
 
# Simple Tutorial 
 
## Recording values 
 
```C 
#include <hdr_histogram.h> 
 
struct hdr_histogram* histogram; 
 
// Initialise the histogram 
hdr_init( 
    1,  // Minimum value 
    INT64_C(3600000000),  // Maximum value 
    3,  // Number of significant figures 
    &histogram)  // Pointer to initialise 
 
// Record value 
hdr_record_value( 
    histogram,  // Histogram to record to 
    value)  // Value to record 
 
// Record value n times 
hdr_record_values( 
    histogram,  // Histogram to record to 
    value,  // Value to record 
    10)  // Record value 10 times 
 
// Record value with correction for co-ordinated omission. 
hdr_record_corrected_value( 
    histogram,  // Histogram to record to 
    value,  // Value to record 
    1000)  // Record with expected interval of 1000. 
 
// Print out the values of the histogram 
hdr_percentiles_print( 
    histogram, 
    stdout,  // File to write to 
    5,  // Granularity of printed values 
    1.0,  // Multiplier for results 
    CLASSIC);  // Format CLASSIC/CSV supported. 
``` 
 
## More examples 
 
For more detailed examples of recording and logging results look at the 
[hdr_decoder](examples/hdr_decoder.c) 
and [hiccup](examples/hiccup.c) 
examples.  You can run hiccup and decoder 
and pipe the results of one into the other. 
 
``` 
$ ./examples/hiccup | ./examples/hdr_decoder 
```