skiplist/stats.go
func (report *StatsReport) Apply(s *Stats) {
	var totalNextPtrs int
	var totalNodes int

	report.ReadConflicts += s.readConflicts
	report.InsertConflicts += s.insertConflicts

	for i, c := range s.levelNodesCount {
		report.NodeDistribution[i] += c
		nodesAtlevel := report.NodeDistribution[i]
		totalNodes += int(nodesAtlevel)
		totalNextPtrs += (i + 1) * int(nodesAtlevel)
	}

	report.SoftDeletes += s.softDeletes
	report.NodeCount = totalNodes
	report.NextPointersPerNode = float64(totalNextPtrs) / float64(totalNodes)
	report.NodeAllocs += s.nodeAllocs
	report.NodeFrees += s.nodeFrees
	report.Memory += s.usedBytes
}
func (report *StatsReport) Apply(s *Stats) {
	var totalNextPtrs int
	var totalNodes int

	report.ReadConflicts += s.readConflicts
	report.InsertConflicts += s.insertConflicts

	for i, c := range s.levelNodesCount {
		report.NodeDistribution[i] += c
		nodesAtlevel := report.NodeDistribution[i]
		totalNodes += int(nodesAtlevel)
		totalNextPtrs += (i + 1) * int(nodesAtlevel)
	}

	report.SoftDeletes += s.softDeletes
	report.NodeCount = totalNodes
	report.NextPointersPerNode = float64(totalNextPtrs) / float64(totalNodes)
	report.NodeAllocs += s.nodeAllocs
	report.NodeFrees += s.nodeFrees
	report.Memory += s.usedBytes
}
// Apply updates the report with provided paritial stats