Skip to content

Instantly share code, notes, and snippets.

@tagomoris
Created March 29, 2012 07:39
Show Gist options
  • Save tagomoris/2234607 to your computer and use it in GitHub Desktop.
Save tagomoris/2234607 to your computer and use it in GitHub Desktop.
def emit(tag, es, chain)
t = if @sample_unit == :all
'all'
else
tag
end
# Access to @counts SHOULD be protected by mutex, with a heavy penalty.
# Code below is not thread safe, but @counts (counter for sampling rate) is not
# so serious value (and probably will not be broke...),
# then i let here as it is now.
pairs = []
es.each {|time,record|
c = (@counts[t] = @counts.fetch(t, 0) + 1)
if c % @interval == 0
pairs.push [time, record]
# reset only just before @counts[t] is to be bignum from fixnum
@counts[t] = 0 if c > 0x6fffffff
end
}
emit_sampled(tag, pairs)
chain.next
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment