-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
time_imports: dataviz (encode load-time graphically) #86
Comments
Also in the above image, note that the time under the root package is not the total. Ye I like that. for total import time, we can either tally up the subtotals, or directly measure it, with ) |
If we size nodes, we need to deal with problem that node size is currently (and by default, in dot), dynamic: longer package names get longer nodes, re See also the note on node size in the dot docs here, for if we move to HTML nodes Maybe we should let labels overflow their containing nodes, as in the first example on that page (https://graphviz.org/doc/info/shapes.html, "a very long label") I kinda like that. You can still resize the text for long packages (as in #10). But the node size is fixed, and it only changes size for |
(Closing this, together with will close ) |
When this is implemented and released, |
Playground: link (try shape plain, fixedsize true) Fixedsize looks kinda ew. ) So I think it's better to let those long packages be. ("Gives character". It's true, aids spatial ~memory). And instead, resize relatively to original size. |
Oooh, box with invisile edges kinda works!! link |
This one for long labels is nice too: |
Stdlib should be made smaller (the fade here is not very visible. Plus, smaller more useful (more room for rest)) |
(The more I look at text-n-arrows-only, the more I like it) |
With smaller stdlib: link |
Actually, now that we don't show edges, we can turn fixedsize off again. |
^ If we do it like that, then
..isn't needed no more |
So: plan: pass a node_size map to for "not in map, take smallest": could then not give those a fontsize, and take it from the default, from test package. Plots yes, that's big. |
Now I'm doing WSL dev, and those two make ..would be good to have dot. "shouldn't be too hard" ™️ |
(test) pkg> add PyPlot
[…]
julia> PkgGraph.LoadTime.time_imports("PyPlot");
┌ Info: Running command:
│ `julia --startup-file=no --project=test -e 'using InteractiveUtils; @time_imports using PyPlot'`
└ Live output:
16.8 ms VersionParsing
22.4 ms Preferences
0.3 ms SnoopPrecompile
78.9 ms Parsers
40.6 ms JSON
5.9 ms Conda
18.4 ms MacroTools
528.4 ms PyCall 2.22% compilation time
1.2 ms Statistics
66.1 ms FixedPointNumbers
0.3 ms Reexport
124.4 ms ColorTypes 21.93% compilation time (100% recompilation)
232.0 ms Colors
1.3 ms LaTeXStrings
899.6 ms PyPlot 4.91% compilation time |
In the above, the time info text is noisy. |
It looks like this:
It's not clear, visually, what takes a long time.
Two options to encode that info graphically:
For both, question of absolute scale:
are we arbiter of what is slow and fast? what if it changes over julia versions.
otoh: human patience for these things is fixed (there's references, HCI lit & canon)
Also, a few deps each with 100 ms is fine. (say 4 such deps → 0.4 second total)
A hundred deps with each 100 ms is not (10 seconds total)
So should they get same colour / size?
Aha! we could fix that, by doing both: colour the main node (root package) according to a fixed, opinionated, absolute scale.
And the sub-deps get a relative colour and-or size
The text was updated successfully, but these errors were encountered: