reduce CLI startup overhead by importing less #1338
Labels
No Label
0.2.0
0.3.0
0.4.0
0.5.0
0.5.1
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
1.0.0
1.1.0
1.10.0
1.10.1
1.10.2
1.10a2
1.11.0
1.12.0
1.12.1
1.13.0
1.14.0
1.15.0
1.15.1
1.2.0
1.3.0
1.4.1
1.5.0
1.6.0
1.6.1
1.7.0
1.7.1
1.7β
1.8.0
1.8.1
1.8.2
1.8.3
1.8β
1.9.0
1.9.0-s3branch
1.9.0a1
1.9.0a2
1.9.0b1
1.9.1
1.9.2
1.9.2a1
LeastAuthority.com automation
blocker
cannot reproduce
cloud-branch
code
code-dirnodes
code-encoding
code-frontend
code-frontend-cli
code-frontend-ftp-sftp
code-frontend-magic-folder
code-frontend-web
code-mutable
code-network
code-nodeadmin
code-peerselection
code-storage
contrib
critical
defect
dev-infrastructure
documentation
duplicate
enhancement
fixed
invalid
major
minor
n/a
normal
operational
packaging
somebody else's problem
supercritical
task
trivial
unknown
was already fixed
website
wontfix
worksforme
No Milestone
No Assignees
4 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#1338
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
bin/tahoe
takes about 3.5 seconds to perform a trivial command (e.g.bin/tahoe --help
) on my machine. Most of this overhead is due to importing dependencies: source:src/allmydata/init.py imports all of Tahoe's dependencies, in order to check their versions.Just removing the calls to
get_package_versions_and_locations()
andcheck_all_requirements()
does not work; we end up importing most of these libraries anyway. However, most of the CLI commands that do not start a node, should not need to import anything excepttwisted.python.usage
.By copying just the files that are needed for the CLI to work at all, and removing imports that are not really necessary, I was able to get the time to run
bin/tahoe --help
on my machine to 1.1 seconds, i.e. a factor-of-3 improvement. This is just a proof of concept at the moment, but I think this improvement could also be obtained for the real CLI. Note that just running a script that prints out the help text takes 0.8 seconds, due to the startup overhead of the Python interpreter.Another major advantage of doing this is that the resulting CLI could be embedded as a library, without pulling in any of Tahoe's dependencies and their associated packaging woes.
I should clarify that this was actually
python bin/tahoe.py --help
, with PYTHONPATH set to thebin
directory, and Twisted installed globally (fortwisted.python.usage
). But since the refactored CLI source files could be in a single directory and don't depend on anything else, it is possible to solve the path problem more simply than we are currently doing.Milestone renamed
renaming milestone
Moving open issues out of closed milestones.
Ticket retargeted after milestone closed