func()

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