mirror of
https://github.com/junegunn/fzf.git
synced 2025-11-18 00:03:39 -05:00
Improve response time by only looking at top-N items
This commit is contained in:
38
src/item.go
38
src/item.go
@@ -104,41 +104,3 @@ func compareRanks(irank Rank, jrank Rank) bool {
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func SortMerge(partialResults [][]*Item) []*Item {
|
||||
if len(partialResults) == 1 {
|
||||
return partialResults[0]
|
||||
}
|
||||
|
||||
merged := []*Item{}
|
||||
|
||||
for len(partialResults) > 0 {
|
||||
minRank := Rank{0, 0, 0}
|
||||
minIdx := -1
|
||||
|
||||
for idx, partialResult := range partialResults {
|
||||
if len(partialResult) > 0 {
|
||||
rank := partialResult[0].Rank()
|
||||
if minIdx < 0 || compareRanks(rank, minRank) {
|
||||
minRank = rank
|
||||
minIdx = idx
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if minIdx >= 0 {
|
||||
merged = append(merged, partialResults[minIdx][0])
|
||||
partialResults[minIdx] = partialResults[minIdx][1:]
|
||||
}
|
||||
|
||||
nonEmptyPartialResults := make([][]*Item, 0, len(partialResults))
|
||||
for _, partialResult := range partialResults {
|
||||
if len(partialResult) > 0 {
|
||||
nonEmptyPartialResults = append(nonEmptyPartialResults, partialResult)
|
||||
}
|
||||
}
|
||||
partialResults = nonEmptyPartialResults
|
||||
}
|
||||
|
||||
return merged
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user