mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-03 18:20:27 +00:00
Merge pull request #2950 from weaveworks/memoise-fixpoint
optimisation: make Memoise(Memoise(...)) only memoise once
This commit is contained in:
@@ -27,6 +27,9 @@ type memoise struct {
|
||||
|
||||
// Memoise wraps the renderer in a loving embrace of caching.
|
||||
func Memoise(r Renderer) Renderer {
|
||||
if _, ok := r.(*memoise); ok {
|
||||
return r // fixpoint
|
||||
}
|
||||
return &memoise{
|
||||
Renderer: r,
|
||||
id: fmt.Sprintf("%x", rand.Int63()),
|
||||
|
||||
@@ -20,6 +20,11 @@ func TestMemoise(t *testing.T) {
|
||||
return render.Nodes{Nodes: report.Nodes{rpt.ID: report.MakeNode(rpt.ID)}}
|
||||
})
|
||||
m := render.Memoise(r)
|
||||
|
||||
if render.Memoise(m) != m {
|
||||
t.Errorf("Memoised renderers should be fixpoints.")
|
||||
}
|
||||
|
||||
rpt1 := report.MakeReport()
|
||||
|
||||
result1 := m.Render(rpt1)
|
||||
|
||||
Reference in New Issue
Block a user