| 2 Dec 2025 | |||
| japhb | That was under VTE/7600. Going to check if the time to respond is the same on Ghostty 1.2.2, which I think is the fastest terminal I have access to, which will hopefully tell me if the terminal or the Raku code are limiting performance here. | 23:50 | |
| Ghostty is a few ms faster on average to respond to each event than VTE, and generally seems more stable time-wise. Still, that only gained like 10-15% performance, so most likely the Raku code is the perf limiter here. | 23:55 | ||
| (And yes, pile up still happened under Ghostty.) | 23:56 | ||
| 3 Dec 2025 | |||
| Geth | Terminal-Widgets/main: 3e51cd0fe4 | (Geoffrey Broadwell)++ | examples/dir-tree.raku You know what makes log scrolling faster? Using the log viewer like you're supposed to, instead of breaking every log entry into a dozen smaller log entries. |
02:01 | |
Terminal-Widgets/main: 9 commits pushed by (Geoffrey Broadwell)++
|
06:57 | ||
| patrickb | Curious as I've not tackled these types of problems before. Is the typical fix for event pile up to simply speed things up? (That's obviously a good improvement in any case.) Intuitively I would have tried to skip redraws whenever I notice that the event queue gets longer than 1. Would that be a stupid idea? | 07:47 | |
| lizmat | fwiw, that's the approach I used in a "full screen" editor that I wrote in the late 80s for a customer, that was supposed to be as responsive on 286s as well as on 386s at the time | 09:22 | |
| japhb | Right now I don't have any visibility into the length of the event queue, though I will probably have to face that when I enable mouse dragging for scroll bars; there's no way I'm going to be able to refresh-for-scroll faster than a modern terminal can throw mouse events. | 17:38 | |
| And no, it's not really a fix to speed things up. It *is* a good opportunity to look for stupid slowness, however. | |||
| For example, the skip table keeps the cost to redraw a scrolled log bounded; previously it was linear in the log length, and thus as the log got longer it would get progressively slower, making the event pile up problem worse as time went on. | 17:41 | ||
| gather/take and phasers in inner loops cost performance, and are easy enough to replace (though yes, a bit uglier now) | 17:43 | ||
| So I suppose you can consider last night to be clearing out some technical debt. :-) | 17:44 | ||
| The other side effect of all that tweaking is that overall performance got more stable (fewer outliers, tighter distribution), which is nice for giving people a steadier, less janky experience. | 17:45 | ||
| (Research a while back showed that people are more annoyed by jank in something that's normally fast than general slowness always.) | |||
| 4 Dec 2025 | |||
| Geth | Terminal-Widgets/main: 01574cd88d | (Geoffrey Broadwell)++ | lib/Terminal/Widgets/Events.rakumod Fix a couple copy/pasted comments |
05:20 | |
| Terminal-Widgets/main: 2c6f9721d7 | (Geoffrey Broadwell)++ | lib/Terminal/Widgets/Events.rakumod Micro-optimize event-handling-children ... due to heavy use during event processing |
|||
| Terminal-Widgets/main: 6bb05b55c9 | (Geoffrey Broadwell)++ | lib/Terminal/Widgets/Events.rakumod Reduce waste for most common LocalizedEvent case |
|||
| japhb | As a side note, regarding optimizing things that aren't the biggest bottleneck -- I find value in lowering the "noise floor" | 05:28 | |
| ... for profiling work. That is to say, getting rid of little slowdowns all over the place than can add up to hiding a real problem. | 05:29 | ||
| And as a bonus, when finally addressing the *actual* bottleneck, the relative performance improvment looks all that much better. ;-) | |||
| Geth | Terminal-Widgets/main: f4571e7e22 | (Geoffrey Broadwell)++ | 3 files Remember expanded descendents of collapsed nodes * Volatile::Tree::Parent nodes can have an `id` method. * If `id` returns a truthy value, the expanded state of the matching DisplayParent will be remembered, even if its parents are collapsed. * In order to have access to the previously-expanded set, DisplayParents now know which Viewer::Tree they are part of. |
06:25 | |
| japhb | patrickb: ^^ Another of your Viewer::Tree requests completed | ||
| Geth | Terminal-Widgets/main: bfc8c89920 | (Geoffrey Broadwell)++ | Changes Update Changes for next release |
07:12 | |
| Terminal-Widgets/main: 000524845e | (Geoffrey Broadwell)++ | 3 files 0.2.4 |
07:15 | ||
| japhb | Well, so much for 0.2.3 being the last 0.2.x ... :-D | 07:17 | |