HDRHistogram 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 552613925806b789118b4fe48e14ab97d586c05c
4
- data.tar.gz: ede44074c166d7508daed156d8f7591c58a111b1
2
+ SHA256:
3
+ metadata.gz: fc890bb97e2d8e3df9318ebeadbdfe33f3593b5ce2ca8afaef123c7876c0cb12
4
+ data.tar.gz: 4e26dd8585aafc0edc028b31ab0185c8397a95897062aa203fc0a2b8f1cc3839
5
5
  SHA512:
6
- metadata.gz: e353550b31b579eba4e36314b5494e1523e925f5260a3470b7c35a74ecd373398dc9f8cefc8e1a32581e80b9bf4f3039fa2fa284477f6dbf845b42d08c233a6f
7
- data.tar.gz: 02f1921c20e1bd017b583b54aa32c1081fb114c4f3188a280bdc52165f45ea57f38b7974a1f9f5bb2fa03726941dbb02b0ad6d8f2e86bf734c511987e624705d
6
+ metadata.gz: 46b8dc766bb51cc69508309b60c9821907f95d14a1564fcca4cbd1447347a02afea2d8cabd6dce41cd40f85ac8e23f8d73020096a821bcc78c8430d3bdc265e9
7
+ data.tar.gz: dd38b0453460d01acebaf66c4f6898e9a1f12514cc3ca24dab51c6c76c83f38629f738d3352959cc394c280745106173ae513ef7a58cabc6913d0d0374bdfef4
@@ -109,6 +109,29 @@ static VALUE histogram_##int_name(VALUE self) { \
109
109
  return INT2NUM(hdr->int_name); \
110
110
  }
111
111
 
112
+ #define HISTOGRAM_SETNUM_METHOD(num_name, num_type) \
113
+ static VALUE histogram_set_##num_name(VALUE self, VALUE num) { \
114
+ GET_HDRHIST(hdr, self); \
115
+ hdr->num_name = NUM2##num_type(num); \
116
+ return Qtrue; \
117
+ }
118
+
119
+ HISTOGRAM_SETNUM_METHOD(lowest_trackable_value, LL)
120
+ HISTOGRAM_SETNUM_METHOD(highest_trackable_value, LL)
121
+ HISTOGRAM_SETNUM_METHOD(unit_magnitude, LONG)
122
+ HISTOGRAM_SETNUM_METHOD(significant_figures, LONG)
123
+ HISTOGRAM_SETNUM_METHOD(sub_bucket_half_count_magnitude, LONG)
124
+ HISTOGRAM_SETNUM_METHOD(sub_bucket_half_count, LONG)
125
+ HISTOGRAM_SETNUM_METHOD(sub_bucket_mask, LL)
126
+ HISTOGRAM_SETNUM_METHOD(sub_bucket_count, LONG)
127
+ HISTOGRAM_SETNUM_METHOD(bucket_count, LONG)
128
+ HISTOGRAM_SETNUM_METHOD(min_value, LL)
129
+ HISTOGRAM_SETNUM_METHOD(max_value, LL)
130
+ HISTOGRAM_SETNUM_METHOD(normalizing_index_offset, LONG)
131
+ HISTOGRAM_SETNUM_METHOD(conversion_ratio, DBL)
132
+ HISTOGRAM_SETNUM_METHOD(counts_len, LONG)
133
+ HISTOGRAM_SETNUM_METHOD(total_count, LL)
134
+
112
135
  HISTOGRAM_GETINT_METHOD(lowest_trackable_value)
113
136
  HISTOGRAM_GETINT_METHOD(highest_trackable_value)
114
137
  HISTOGRAM_GETINT_METHOD(unit_magnitude)
@@ -117,6 +140,14 @@ HISTOGRAM_GETINT_METHOD(bucket_count)
117
140
  HISTOGRAM_GETINT_METHOD(sub_bucket_count)
118
141
  HISTOGRAM_GETINT_METHOD(counts_len)
119
142
 
143
+ static VALUE histogram_set_raw_count(VALUE self, VALUE index, VALUE count) {
144
+ GET_HDRHIST(hdr, self);
145
+ int i = NUM2INT(index);
146
+ int64_t c = NUM2LL(count);
147
+ hdr->counts[i]=c;
148
+ return Qtrue;
149
+ }
150
+
120
151
  void Init_ruby_hdr_histogram() {
121
152
  HDRHistogram = rb_define_class("HDRHistogram", rb_cObject);
122
153
  HDRHistogramError = rb_define_class_under(HDRHistogram, "HDRHistogramError", rb_eRuntimeError);
@@ -138,15 +169,34 @@ void Init_ruby_hdr_histogram() {
138
169
  rb_define_private_method(HDRHistogram, "raw_percentile", histogram_percentile, 1);
139
170
  rb_define_private_method(HDRHistogram, "raw_merge", histogram_merge, 1);
140
171
 
172
+ rb_define_private_method(HDRHistogram, "lowest_trackable_value=", histogram_set_lowest_trackable_value, 1);
173
+ rb_define_private_method(HDRHistogram, "highest_trackable_value=", histogram_set_highest_trackable_value, 1);
174
+ rb_define_private_method(HDRHistogram, "unit_magnitude=", histogram_set_unit_magnitude, 1);
175
+ rb_define_private_method(HDRHistogram, "significant_figures=", histogram_set_significant_figures, 1);
176
+ rb_define_private_method(HDRHistogram, "sub_bucket_half_count_magnitude=", histogram_set_sub_bucket_half_count_magnitude, 1);
177
+ rb_define_private_method(HDRHistogram, "sub_bucket_half_count=", histogram_set_sub_bucket_half_count, 1);
178
+ rb_define_private_method(HDRHistogram, "sub_bucket_mask=", histogram_set_sub_bucket_mask, 1);
179
+ rb_define_private_method(HDRHistogram, "sub_bucket_count=", histogram_set_sub_bucket_count, 1);
180
+ rb_define_private_method(HDRHistogram, "bucket_count=", histogram_set_bucket_count, 1);
181
+ rb_define_private_method(HDRHistogram, "min_value=", histogram_set_min_value, 1);
182
+ rb_define_private_method(HDRHistogram, "max_value=", histogram_set_max_value, 1);
183
+ rb_define_private_method(HDRHistogram, "normalizing_index_offset=", histogram_set_normalizing_index_offset, 1);
184
+ rb_define_private_method(HDRHistogram, "conversion_ratio=", histogram_set_conversion_ratio, 1);
185
+ rb_define_private_method(HDRHistogram, "counts_len=", histogram_set_counts_len, 1);
186
+ rb_define_private_method(HDRHistogram, "total_count=", histogram_set_total_count, 1);
187
+ rb_define_private_method(HDRHistogram, "set_raw_count", histogram_set_raw_count, 2);
141
188
 
142
189
  rb_define_method(HDRHistogram, "lowest_trackable_value", histogram_lowest_trackable_value, 0);
143
190
  rb_define_method(HDRHistogram, "highest_trackable_value", histogram_highest_trackable_value, 0);
144
191
  rb_define_private_method(HDRHistogram, "unit_magnitude", histogram_unit_magnitude, 0);
145
192
  rb_define_method(HDRHistogram, "significant_figures", histogram_significant_figures, 0);
146
193
  rb_define_private_method(HDRHistogram, "bucket_count", histogram_bucket_count, 0);
147
- rb_define_private_method(HDRHistogram, "sub_bucket_count", histogram_bucket_count, 0);
194
+ rb_define_private_method(HDRHistogram, "sub_bucket_count", histogram_sub_bucket_count, 0);
148
195
  rb_define_private_method(HDRHistogram, "counts_len", histogram_counts_len, 0);
149
196
 
197
+
198
+ rb_define_private_method(HDRHistogram, "unit_magnitude", histogram_unit_magnitude, 0);
199
+
150
200
  //rb_define_private_method(HDRHistogram, "histogram_spectrum", histogram_spectrum, 2);
151
201
  }
152
202
 
@@ -5,6 +5,37 @@ class HDRHistogram
5
5
  def initialize(lowest, highest, sig, opt={})
6
6
  @multiplier = opt[:multiplier] || 1
7
7
  @unit = opt[:unit] || opt[:units]
8
+
9
+ if opt[:unserialized]
10
+ m=opt[:unserialized]
11
+ self.unit_magnitude= m[:unit_magnitude].to_i
12
+ self.sub_bucket_half_count_magnitude= m[:sub_bucket_half_count_magnitude].to_i
13
+ self.sub_bucket_half_count= m[:sub_bucket_half_count].to_i
14
+ self.sub_bucket_mask= m[:sub_bucket_mask].to_i
15
+ self.sub_bucket_count= m[:sub_bucket_count].to_i
16
+ self.bucket_count= m[:bucket_count].to_i
17
+ self.min_value= m[:min_value].to_i
18
+ self.max_value= m[:max_value].to_i
19
+ self.normalizing_index_offset= m[:normalizing_index_offset].to_i
20
+ self.conversion_ratio= m[:conversion_ratio].to_f
21
+ self.counts_len= m[:counts_len].to_i
22
+ self.total_count= m[:total_count].to_i
23
+
24
+ counts = m[:counts].split " "
25
+ i=0
26
+ counts.each do |count|
27
+ m = count.match /^~(\d+)$/
28
+ if m then #zerofill
29
+ m[1].to_i.times do
30
+ set_raw_count(i, 0)
31
+ i=i+1
32
+ end
33
+ else
34
+ set_raw_count(i, count.to_i)
35
+ i=i+1
36
+ end
37
+ end
38
+ end
8
39
  end
9
40
 
10
41
  def record(val)
@@ -62,4 +93,13 @@ class HDRHistogram
62
93
  end
63
94
  private_class_method :adjusted_boundary_val
64
95
 
96
+ def self.unserialize(str)
97
+ regex = /^(?<lowest_trackable_value>\d+) (?<highest_trackable_value>\d+) (?<unit_magnitude>\d+) (?<significant_figures>\d+) (?<sub_bucket_half_count_magnitude>\d+) (?<sub_bucket_half_count>\d+) (?<sub_bucket_mask>\d+) (?<sub_bucket_count>\d+) (?<bucket_count>\d+) (?<min_value>\d+) (?<max_value>\d+) (?<normalizing_index_offset>\d+) (?<conversion_ratio>\S+) (?<counts_len>\d+) (?<total_count>\d+) \[(?<counts>[\d~ ]+)\s\]/
98
+
99
+ m = str.match regex
100
+
101
+ hdrh = self.new(m[:lowest_trackable_value].to_i, m[:highest_trackable_value].to_i, m[:significant_figures].to_i, {unserialized: m})
102
+
103
+ return hdrh
104
+ end
65
105
  end
@@ -1,3 +1,3 @@
1
1
  class HDRHistogram
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: HDRHistogram
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leo P.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-18 00:00:00.000000000 Z
11
+ date: 2018-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
128
  version: '0'
129
129
  requirements: []
130
130
  rubyforge_project:
131
- rubygems_version: 2.5.2
131
+ rubygems_version: 2.7.7
132
132
  signing_key:
133
133
  specification_version: 4
134
134
  summary: Ruby wrapper for the C hdr_histogram library