本文整理汇总了Golang中github.com/codahale/hdrhistogram.New函数的典型用法代码示例。如果您正苦于以下问题:Golang New函数的具体用法?Golang New怎么用?Golang New使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了New函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestEquals
func TestEquals(t *testing.T) {
h1 := hdrhistogram.New(1, 10000000, 3)
for i := 0; i < 1000000; i++ {
if err := h1.RecordValue(int64(i)); err != nil {
t.Fatal(err)
}
}
h2 := hdrhistogram.New(1, 10000000, 3)
for i := 0; i < 10000; i++ {
if err := h1.RecordValue(int64(i)); err != nil {
t.Fatal(err)
}
}
if h1.Equals(h2) {
t.Error("Expected Histograms to not be equivalent")
}
h1.Reset()
h2.Reset()
if !h1.Equals(h2) {
t.Error("Expected Histograms to be equivalent")
}
}
示例2: Runf
// Runf runs the given job at the given concurrency level, at the given rate,
// returning a set of results with aggregated latency and throughput
// measurements.
func (b Bench) Runf(concurrency int, rate float64, job Job) Result {
var started, finished sync.WaitGroup
started.Add(1)
finished.Add(concurrency)
result := Result{
Concurrency: concurrency,
Latency: hdrhistogram.New(us(b.MinLatency), us(b.MaxLatency), 5),
}
timings := make(chan *hdrhistogram.Histogram, concurrency)
errors := make(chan error, concurrency)
workerRate := float64(concurrency) / rate
period := time.Duration((workerRate)*1000000) * time.Microsecond
for i := 0; i < concurrency; i++ {
go func(id int) {
defer finished.Done()
gen := &Generator{
hist: hdrhistogram.New(us(b.MinLatency), us(b.MaxLatency), 5),
success: &result.Success,
failure: &result.Failure,
period: period,
duration: b.Duration,
warmup: b.Warmup,
}
started.Wait()
errors <- job(id, gen)
timings <- gen.hist
}(i)
}
started.Done()
finished.Wait()
result.Elapsed = b.Duration
close(timings)
for v := range timings {
result.Latency.Merge(v)
}
close(errors)
for e := range errors {
if e != nil {
result.Errors = append(result.Errors, e)
}
}
return result
}
示例3: TestHighestTrackableValue
func TestHighestTrackableValue(t *testing.T) {
const maxVal = 11
h := hdrhistogram.New(1, maxVal, 3)
if h.HighestTrackableValue() != maxVal {
t.Errorf("HighestTrackableValue figures was %v, expected %d", h.HighestTrackableValue(), maxVal)
}
}
示例4: TestLowestTrackableValue
func TestLowestTrackableValue(t *testing.T) {
const minVal = 2
h := hdrhistogram.New(minVal, 10, 3)
if h.LowestTrackableValue() != minVal {
t.Errorf("LowestTrackableValue figures was %v, expected %d", h.LowestTrackableValue(), minVal)
}
}
示例5: TestByteSize
func TestByteSize(t *testing.T) {
h := hdrhistogram.New(1, 100000, 3)
if v, want := h.ByteSize(), 65604; v != want {
t.Errorf("ByteSize was %v, but expected %d", v, want)
}
}
示例6: TestCumulativeDistribution
func TestCumulativeDistribution(t *testing.T) {
h := hdrhistogram.New(1, 100000000, 3)
for i := 0; i < 1000000; i++ {
if err := h.RecordValue(int64(i)); err != nil {
t.Fatal(err)
}
}
actual := h.CumulativeDistribution()
expected := []hdrhistogram.Bracket{
hdrhistogram.Bracket{Quantile: 0, Count: 1, ValueAt: 0},
hdrhistogram.Bracket{Quantile: 50, Count: 500224, ValueAt: 500223},
hdrhistogram.Bracket{Quantile: 75, Count: 750080, ValueAt: 750079},
hdrhistogram.Bracket{Quantile: 87.5, Count: 875008, ValueAt: 875007},
hdrhistogram.Bracket{Quantile: 93.75, Count: 937984, ValueAt: 937983},
hdrhistogram.Bracket{Quantile: 96.875, Count: 969216, ValueAt: 969215},
hdrhistogram.Bracket{Quantile: 98.4375, Count: 984576, ValueAt: 984575},
hdrhistogram.Bracket{Quantile: 99.21875, Count: 992256, ValueAt: 992255},
hdrhistogram.Bracket{Quantile: 99.609375, Count: 996352, ValueAt: 996351},
hdrhistogram.Bracket{Quantile: 99.8046875, Count: 998400, ValueAt: 998399},
hdrhistogram.Bracket{Quantile: 99.90234375, Count: 999424, ValueAt: 999423},
hdrhistogram.Bracket{Quantile: 99.951171875, Count: 999936, ValueAt: 999935},
hdrhistogram.Bracket{Quantile: 99.9755859375, Count: 999936, ValueAt: 999935},
hdrhistogram.Bracket{Quantile: 99.98779296875, Count: 999936, ValueAt: 999935},
hdrhistogram.Bracket{Quantile: 99.993896484375, Count: 1000000, ValueAt: 1000447},
hdrhistogram.Bracket{Quantile: 100, Count: 1000000, ValueAt: 1000447},
}
if !reflect.DeepEqual(actual, expected) {
t.Errorf("CF was %#v, but expected %#v", actual, expected)
}
}
示例7: BenchmarkNew
func BenchmarkNew(b *testing.B) {
b.ReportAllocs()
for i := 0; i < b.N; i++ {
hdrhistogram.New(1, 120000, 3) // this could track 1ms-2min
}
}
示例8: TestSignificantFigures
func TestSignificantFigures(t *testing.T) {
const sigFigs = 4
h := hdrhistogram.New(1, 10, sigFigs)
if h.SignificantFigures() != sigFigs {
t.Errorf("Significant figures was %v, expected %d", h.SignificantFigures(), sigFigs)
}
}
示例9: aggregate
// aggregate run contexts
func (b *Bench) aggregate() {
// aggregate timer metrics
for _, n := range b.allContextsKeys(timerKeys) {
t := hdrhistogram.New(min, max, precision)
b.timers[n] = t
for i := 0; i < b.concurrentRuns; i++ {
otherTimer, ok := b.runContexts[i].timers[n]
if ok {
t.Merge(otherTimer)
}
}
}
// aggregate counters
for _, n := range b.allContextsKeys(counterKeys) {
for i := 0; i < b.concurrentRuns; i++ {
b.counters[n] += b.runContexts[i].counters[n]
}
}
// aggregate call counts
for i := 0; i < b.concurrentRuns; i++ {
b.calls += b.runContexts[i].Iteration
}
}
示例10: TestValueAtQuantile
func TestValueAtQuantile(t *testing.T) {
h := hdrhistogram.New(1, 10000000, 3)
for i := 0; i < 1000000; i++ {
if err := h.RecordValue(int64(i)); err != nil {
t.Fatal(err)
}
}
data := []struct {
q float64
v int64
}{
{q: 50, v: 500223},
{q: 75, v: 750079},
{q: 90, v: 900095},
{q: 95, v: 950271},
{q: 99, v: 990207},
{q: 99.9, v: 999423},
{q: 99.99, v: 999935},
}
for _, d := range data {
if v := h.ValueAtQuantile(d.q); v != d.v {
t.Errorf("P%v was %v, but expected %v", d.q, v, d.v)
}
}
}
示例11: TestExportImport
func TestExportImport(t *testing.T) {
min := int64(1)
max := int64(10000000)
sigfigs := 3
h := hdrhistogram.New(min, max, sigfigs)
for i := 0; i < 1000000; i++ {
if err := h.RecordValue(int64(i)); err != nil {
t.Fatal(err)
}
}
s := h.Export()
if v := s.LowestTrackableValue; v != min {
t.Errorf("LowestTrackableValue was %v, but expected %v", v, min)
}
if v := s.HighestTrackableValue; v != max {
t.Errorf("HighestTrackableValue was %v, but expected %v", v, max)
}
if v := int(s.SignificantFigures); v != sigfigs {
t.Errorf("SignificantFigures was %v, but expected %v", v, sigfigs)
}
if imported := hdrhistogram.Import(s); !imported.Equals(h) {
t.Error("Expected Histograms to be equivalent")
}
}
示例12: newConnectionBenchmark
// newConnectionBenchmark creates a connectionBenchmark which runs a system
// benchmark using the given Requester. The requestRate argument specifies the
// number of requests per second to issue. A zero value disables rate limiting
// entirely. The duration argument specifies how long to run the benchmark.
func newConnectionBenchmark(requester Requester, requestRate uint64, duration time.Duration) *connectionBenchmark {
var interval time.Duration
if requestRate > 0 {
interval = time.Duration(1000000000 / requestRate)
}
return &connectionBenchmark{
requester: requester,
requestRate: requestRate,
duration: duration,
expectedInterval: interval,
successHistogram: hdrhistogram.New(1, maxRecordableLatencyNS, sigFigs),
uncorrectedSuccessHistogram: hdrhistogram.New(1, maxRecordableLatencyNS, sigFigs),
errorHistogram: hdrhistogram.New(1, maxRecordableLatencyNS, sigFigs),
uncorrectedErrorHistogram: hdrhistogram.New(1, maxRecordableLatencyNS, sigFigs),
}
}
示例13: TestNaN
func TestNaN(t *testing.T) {
h := hdrhistogram.New(1, 100000, 3)
if math.IsNaN(h.Mean()) {
t.Error("mean is NaN")
}
if math.IsNaN(h.StdDev()) {
t.Error("stddev is NaN")
}
}
示例14: NewHistogram
// NewHistogram initializes a given Histogram. The contained windowed histogram
// rotates every 'duration'; both the windowed and the cumulative histogram
// track nonnegative values up to 'maxVal' with 'sigFigs' decimal points of
// precision.
func NewHistogram(metadata Metadata, duration time.Duration, maxVal int64, sigFigs int) *Histogram {
dHist := newSlidingHistogram(duration, maxVal, sigFigs)
h := &Histogram{
Metadata: metadata,
maxVal: maxVal,
}
h.mu.cumulative = hdrhistogram.New(0, maxVal, sigFigs)
h.mu.sliding = dHist
return h
}
示例15: TestRecordCorrectedValueStall
func TestRecordCorrectedValueStall(t *testing.T) {
h := hdrhistogram.New(1, 100000, 3)
if err := h.RecordCorrectedValue(1000, 100); err != nil {
t.Fatal(err)
}
if v, want := h.ValueAtQuantile(75), int64(800); v != want {
t.Errorf("Corrected value was %v, but expected %v", v, want)
}
}