Skip to content

Commit 55df686

Browse files
committed
[feat] improve performance of entity tree operations
1 parent f72d158 commit 55df686

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

internal/model/entity.go

+10-5
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,23 @@ type Entity struct {
1919
}
2020

2121
func (e Entity) Render() linebuffer.LineBufferer {
22+
return linebuffer.New(e.Repr())
23+
}
24+
25+
// Repr is a faster equivalent to e.Render().Content()
26+
func (e Entity) Repr() string {
2227
if e.IsCluster {
23-
return linebuffer.New(e.Prefix + e.Container.Cluster)
28+
return e.Prefix + e.Container.Cluster
2429
} else if e.IsNamespace {
25-
return linebuffer.New(e.Prefix + e.Container.Namespace)
30+
return e.Prefix + e.Container.Namespace
2631
} else if e.IsPodOwner {
2732
res := e.Prefix + e.Container.PodOwner
2833
if e.Container.PodOwnerMetadata.OwnerType != "" {
2934
res += " <" + e.Container.PodOwnerMetadata.OwnerType + ">"
3035
}
31-
return linebuffer.New(res)
36+
return res
3237
} else if e.IsPod {
33-
return linebuffer.New(e.Prefix + e.Container.Pod)
38+
return e.Prefix + e.Container.Pod
3439
} else {
3540
// for containers
3641
res := e.Prefix + e.State.StatusIndicator() + " " + e.Container.Name + " (" + e.Container.Status.State.String()
@@ -66,7 +71,7 @@ func (e Entity) Render() linebuffer.LineBufferer {
6671
}
6772

6873
res += ")"
69-
return linebuffer.New(res)
74+
return res
7075
}
7176
}
7277

internal/model/entity_tree.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ func (et *entityTreeImpl) IsVisibleGivenFilter(entity Entity, filter filter.Mode
323323
et.isVisibleCache = newIsVisibleCache(filter)
324324
}
325325

326-
if filter.Matches(entity.Render().Content()) {
326+
if filter.Matches(entity.Repr()) {
327327
return et.isVisibleCache.SetAndReturn(entity, true)
328328
}
329329

@@ -338,13 +338,13 @@ func (et *entityTreeImpl) IsVisibleGivenFilter(entity Entity, filter filter.Mode
338338

339339
parent := et.getParentEntity(entity)
340340
for !parent.EqualTo(Entity{}) {
341-
if filter.Matches(parent.Render().Content()) {
341+
if filter.Matches(parent.Repr()) {
342342
return et.isVisibleCache.SetAndReturn(entity, true)
343343
}
344344
parent = et.getParentEntity(parent)
345345
}
346346

347-
return et.isVisibleCache.SetAndReturn(entity, filter.Matches(parent.Render().Content()))
347+
return et.isVisibleCache.SetAndReturn(entity, filter.Matches(parent.Repr()))
348348
}
349349

350350
func (et *entityTreeImpl) GetContainerEntities() []Entity {

internal/page/entities.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func (p EntityPage) HighjackingInput() bool {
9393
func (p EntityPage) ContentForFile() []string {
9494
var content []string
9595
for _, l := range p.getVisibleEntities() {
96-
content = append(content, l.Render().Content())
96+
content = append(content, l.Repr())
9797
}
9898
return content
9999
}

0 commit comments

Comments
 (0)