func()

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())
	}
}