On Wednesday, July 16, 2025 at 10:15:01 AM UTC-5 Edward K. Ream wrote:

Recent improvements to @clean allow Leo to update outlines containing 
thousands of @clean nodes. For the first time, it is feasible to use Leo to 
work on huge repos such as Rust's compiler 
<https://github.com/rust-lang/rust/tree/master/compiler>.

Alas, Leo's performance degrades substantially when using huge outlines. 
Python's GC (Garbage Collector) probably gets overly stressed by all the 
temporary data Leo generates.

This Engineering Notebook post explores a possible solution.


I now have enough experience with  PR #4397 
<https://github.com/leo-editor/leo-editor/pull/4397>  to know that the 
features it offers are worthwhile.

However, @leo and its infrastructure will not greatly change the Leonine 
world.

*Splitting outlines is the only way to improve performance*

Leo chokes when loading more than about half a dozen outlines into tabs. 
Indeed, the performance is *much worse* than when using a single larger 
file. So much for that idea!

The PR lets user scripts split a large repo into a *top-level outline* and 
several *sub-outlines*, one per sub-outline. A helper, *c.makeLinkLeoFiles*, 
does all the heavy lifting. The PR shows the script I have been using for 
testing.

Sub-outlines help performance because (and only because) they are much 
smaller than an all-inclusive outline. That's not nothing!

Furthermore, sub-outlines limit the scope of clone find commands to a 
sub-directory (and all the files in descendant directories). That's a 
feature or bug, depending on your point of view. But for study purposes, 
limiting the scope of searches should work just fine.

*Conclusions*

- @leo is worth doing because splitting a huge outline into sub-outlines ( 
*c.makeLinkLeoFiles*) makes sense in some situations. 

- The transitive closure algorithm (*c.openAllLinkedFiles*) is worth having!

- Imo, there is no reason to consider running Leo in separate processes. 
The benefits are likely to be negligible.

- Cross-file searches and cross-file clones aren't going to happen.

- I'll merge PR #4397 <https://github.com/leo-editor/leo-editor/pull/4397> as 
soon as Félix approves it.

Edward

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/leo-editor/2a33d7bb-152d-481a-a3d3-e754fa7129een%40googlegroups.com.

Reply via email to