Skip to content

Commit 62c762f

Browse files
committed
cached: Parallelizes ListMerge caches refresh
1 parent 8296c6b commit 62c762f

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

Diff for: pkg/cached/cache.go

+20-3
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,27 @@ func NewListMerger[T, V any](mergeFn func(results []Result[T]) Result[V], caches
171171
caches: caches,
172172
}
173173
}
174+
174175
func (c *listMerger[T, V]) prepareResultsLocked() []Result[T] {
175-
cacheResults := make([]Result[T], 0, len(c.caches))
176-
for _, cache := range c.caches {
177-
cacheResults = append(cacheResults, cache.Get())
176+
cacheResults := make([]Result[T], len(c.caches))
177+
ch := make(chan struct {
178+
int
179+
Result[T]
180+
}, len(c.caches))
181+
for i := range c.caches {
182+
go func(index int) {
183+
ch <- struct {
184+
int
185+
Result[T]
186+
}{
187+
index,
188+
c.caches[index].Get(),
189+
}
190+
}(i)
191+
}
192+
for i := 0; i < len(c.caches); i++ {
193+
res := <-ch
194+
cacheResults[res.int] = res.Result
178195
}
179196
return cacheResults
180197
}

0 commit comments

Comments
 (0)