merge interval now is quite faster with reusing slices

This commit is contained in:
Chris Lu 2018-11-18 21:24:58 -08:00
parent d2924c7748
commit 469863f7f0

View file

@ -109,7 +109,7 @@ var bufPool = sync.Pool{
},
}
func mergeIntoVisibles(visibles []*visibleInterval, chunk *filer_pb.FileChunk) (newVisibles []*visibleInterval) {
func mergeIntoVisibles(visibles, newVisibles []*visibleInterval, chunk *filer_pb.FileChunk, ) ([]*visibleInterval) {
newV := newVisibleInterval(
chunk.Offset,
@ -160,7 +160,7 @@ func mergeIntoVisibles(visibles []*visibleInterval, chunk *filer_pb.FileChunk) (
}
}
return
return newVisibles
}
func nonOverlappingVisibleIntervals(chunks []*filer_pb.FileChunk) (visibles []*visibleInterval) {
@ -169,8 +169,12 @@ func nonOverlappingVisibleIntervals(chunks []*filer_pb.FileChunk) (visibles []*v
return chunks[i].Mtime < chunks[j].Mtime
})
var newVislbles []*visibleInterval
for _, chunk := range chunks {
visibles = mergeIntoVisibles(visibles, chunk)
newVislbles = mergeIntoVisibles(visibles, newVislbles, chunk)
t := visibles[:0]
visibles = newVislbles
newVislbles = t
}
logPrintf("visibles", visibles)