Skip to content

Commit 35b937e

Browse files
committed
Improve debugging and timing info for Viewer::Tree
1 parent f9ac671 commit 35b937e

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

lib/Terminal/Widgets/Viewer/Tree.rakumod

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
use nano;
44

5+
use Terminal::Widgets::Common;
56
use Terminal::Widgets::Layout;
67
use Terminal::Widgets::Events;
78
use Terminal::Widgets::TextContent;
@@ -36,7 +37,7 @@ my class DisplayLeaf does DisplayNode {
3637
method branch-size(--> 1) { }
3738
}
3839

39-
my class DisplayParent does DisplayNode {
40+
my class DisplayParent does DisplayNode does Terminal::Widgets::Common {
4041
has Terminal::Widgets::Viewer::Tree:D $.tree is required;
4142

4243
has DisplayNode:D @.children;
@@ -67,6 +68,9 @@ my class DisplayParent does DisplayNode {
6768

6869
#| Set expanded state, refreshing or emptying children as appropriate
6970
method set-expanded($!expanded) {
71+
note "⚙️ Starting set-expanded to $!expanded for dir {$!data.short-name.raku}" if $!debug;
72+
my $t0 = nano;
73+
7074
my $id = $!data.id;
7175
if $!expanded {
7276
$!tree.previously-expanded{$id} = True if $id;
@@ -76,6 +80,8 @@ my class DisplayParent does DisplayNode {
7680
$!tree.previously-expanded{$id}:delete if $id;
7781
@!children = Empty;
7882
}
83+
84+
self.debug-elapsed($t0, desc => "set-expanded to $!expanded for dir {$!data.short-name.raku}");
7985
}
8086

8187
#| Number of nodes in visible child branches, including self
@@ -117,21 +123,25 @@ class Terminal::Widgets::Viewer::Tree
117123
method set-sort-by(&!sort-by) { self.clear-caches }
118124

119125
# Auto-cache flattened nodes and displayable lines
126+
my sub cache-size(@c) {
127+
my $count = @c.elems;
128+
$count ~ ' elem' ~ ($count == 1 ?? '' !! 's')
129+
}
120130
method flat-node-cache() {
121131
@!flat-node-cache ||= do {
122132
my $t0 = nano;
123133
self.flattened-nodes($!display-root, my @n);
124-
note sprintf("💲 Refill flattened-nodes: %.3fms (%d elems)",
125-
(nano - $t0) / 1_000_000, @n.elems) if $.debug;
134+
self.debug-elapsed($t0, icon => '💲',
135+
desc => "Refill flat-node-cache ({cache-size @n})");
126136
@n
127137
}
128138
}
129139
method flat-line-cache() {
130140
@!flat-line-cache ||= do {
131141
my $t0 = nano;
132142
self.node-lines($!display-root, my @l);
133-
note sprintf("💲 Refill node-lines: %.3fms (%d elems)",
134-
(nano - $t0) / 1_000_000, @l.elems) if $.debug;
143+
self.debug-elapsed($t0, icon => '💲',
144+
desc => "Refill flat-line-cache ({cache-size @l})");
135145
@l
136146
}
137147
}
@@ -156,8 +166,8 @@ class Terminal::Widgets::Viewer::Tree
156166
+ duospace-width-core(.[1].text, 0)
157167
}).max;
158168

159-
note sprintf("💲 Recalculate max-line-width: %.3fms (%d elems)",
160-
(nano - $t0) / 1_000_000, @!flat-line-cache.elems) if $.debug;
169+
self.debug-elapsed($t0, icon => '💲',
170+
desc => "Recalc max-line-width ({cache-size @!flat-line-cache})");
161171
$max
162172
}
163173
}
@@ -234,11 +244,13 @@ class Terminal::Widgets::Viewer::Tree
234244

235245
#| Convert a displayed line index to the matching DisplayNode
236246
method line-to-display-node(UInt:D $line) {
247+
note '… line-to-display-node';
237248
self.flat-node-cache[$line]
238249
}
239250

240251
#| Determine the displayed line index of a given DisplayNode
241252
method display-node-to-line($node) {
253+
note '… display-node-to-line';
242254
self.flat-node-cache.first(* === $node, :k)
243255
}
244256

@@ -268,6 +280,7 @@ class Terminal::Widgets::Viewer::Tree
268280
#| Select a given node as current, expanding parents if needed and
269281
#| processing a "click" on the node
270282
method select-node($node, Bool:D :$refresh = True) {
283+
note '… select-node';
271284
if $!current-node !=== $node {
272285
self.remove-highlight($!current-node);
273286
$!current-node = $node;
@@ -313,8 +326,7 @@ class Terminal::Widgets::Viewer::Tree
313326
self.fix-scroll-maxes;
314327
self.refresh-for-scroll(:force);
315328

316-
note sprintf("⏱️ Refresh for expand change of {self.gist-name}: %.3fms",
317-
(nano - $t0) / 1_000_000) if $.debug;
329+
self.debug-elapsed($t0);
318330
}
319331

320332
#| Walk up the parents from a given DisplayNode, making sure they are

0 commit comments

Comments
 (0)