in go/distinct_count_merge_speed_profile.go [107:161]
func (d *DistinctCountMergeSpeedProfile) runTrial(stats *mergeSpeedStats, lgK int, lgDeltaU int) {
var (
start = uint64(0)
serTime_nS = uint64(0)
deserTime_nS = uint64(0)
mergeTime_nS = uint64(0)
byteArr = []byte{}
err error
source hll.HllSketch
)
if d.config.serDe {
// Serialise
if d.config.compact {
start = uint64(time.Now().UnixNano())
byteArr, err = d.source.ToCompactSlice()
serTime_nS = uint64(time.Now().UnixNano()) - start
} else {
start = uint64(time.Now().UnixNano())
byteArr, err = d.source.ToUpdatableSlice()
serTime_nS = uint64(time.Now().UnixNano()) - start
}
if err != nil {
panic(err)
}
// Deserialise
start = uint64(time.Now().UnixNano())
source, err = hll.NewHllSketchFromSlice(byteArr, true)
deserTime_nS = uint64(time.Now().UnixNano()) - start
if err != nil {
panic(err)
}
// Merge
start = uint64(time.Now().UnixNano())
err = d.union.UpdateSketch(source)
mergeTime_nS += uint64(time.Now().UnixNano()) - start
if err != nil {
panic(err)
}
} else {
start = uint64(time.Now().UnixNano())
err = d.union.UpdateSketch(d.source)
mergeTime_nS = uint64(time.Now().UnixNano()) - start
if err != nil {
panic(err)
}
}
stats.serializeTime_nS = float64(serTime_nS)
stats.deserializeTime_nS = float64(deserTime_nS)
stats.mergeTime_nS = float64(mergeTime_nS)
stats.totalTime_nS = float64(mergeTime_nS)
}