Taking TTFX seriously: Can we make common packages faster to load and use

This is certainly something that takes new Julia users time to get used to. Fortunately, there are strategies to improve the experience. Compiling a system image is one of them. Here’s a video I made for my students that explains the issue and how to compile a system image. This is not the most concise explanation, but it might be of interest. Speed - YouTube

9 Likes

I mean, the thread is explicitly about solving your problem! It’s also a pain to everyone else.

So when giving this kind of feedback remember julia package devs are just people like you. Positive motivation is more effective than saying you will stick to python if we don’t fix things, without even reading the thread.

Fixing these problems is essentially work people need to do, and mostly for free. I personally put a few weekends into it so far and I know others are as well. But like you, we all have other more interesting things to do with our time than fix TTFX.

For you to help getting what you want, if you have any specific packages with slow load time, check if its github has an issue for this already and add your concersn, and if not make one with a minimum working example of how long it takes. It’s invaluable feedback, and shows that a) people want to use our tools, and b) care enough to time them and make an issue. So maybe its worth us putting in a few hours to fix.

18 Likes

Would add value if someone came back to this thread periodically with updates (things that were done or are being done to address the issue)

4 Likes

Sorry for bringing such a negative tone…you’re right, I should help rather than complain. I just can’t imagine how beginners/those unfamiliar with Julia must feel if I felt frustrated already having a decent amount of prior programming experience and being every excited about the Julia project.

I have some newbie questions, not necessarily about improving slow load times for specific packages. Is making pre-compiled binary packages available for install in the realm of possibility, like Python’s “wheels”?

And I’ve tried compiling a sys image, but have found it’s not always straightforward to use–how do I load it when working with a Jupyter notebook in VS Code? I know VS Code can create a sys image for the current environment, but I don’t always have/want an environment for the current thing, especially since compiling a sys image takes so long. Is there any reason in principle why compilation results couldn’t be cached more actively/automatically everywhere? So that if I’ve compiled a package with a specific version anywhere recently I don’t have to compile it again?

1 Like

This describes the current state: Support external linkage in "sysimages" by timholy · Pull Request #44527 · JuliaLang/julia · GitHub

4 Likes

This looks awesome, exactly the thing I felt was missing. Thank you!