in go/distinct_count_merge_speed_profile.go [52:88]
func (d *DistinctCountMergeSpeedProfile) run() {
sb := &strings.Builder{}
d.setHeader(sb)
fmt.Println(sb.String())
stats := &mergeSpeedStats{}
vIn := int64(0)
debug.SetGCPercent(-1)
debug.SetMemoryLimit(math.MaxInt64)
for lgK := d.config.minLgK; lgK <= d.config.maxLgK; lgK++ {
runtime.GC()
var (
lgT = d.config.maxLgK - lgK + d.config.lgMinT
trials = 1 << lgT
sumSerializeTime_nS = 0.0
sumDeserializeTime_nS = 0.0
sumMergeTime_nS = 0.0
sumTotalTime_nS = 0.0
)
sb.Reset()
vIn = d.resetMerge(lgK, vIn)
for t := 0; t < trials; t++ {
d.runTrial(stats, lgK, d.config.lgDeltaU)
sumSerializeTime_nS += stats.serializeTime_nS
sumDeserializeTime_nS += stats.deserializeTime_nS
sumMergeTime_nS += stats.mergeTime_nS
sumTotalTime_nS += stats.totalTime_nS
}
stats.serializeTime_nS = sumSerializeTime_nS / float64(trials)
stats.deserializeTime_nS = sumDeserializeTime_nS / float64(trials)
stats.mergeTime_nS = sumMergeTime_nS / float64(trials)
stats.totalTime_nS = sumTotalTime_nS / float64(trials)
d.process(stats, lgK, lgT, sb)
fmt.Println(sb.String())
}
}