Automated script to measure the precompilation, installation and loading time of every package, and a tool to estimate how long a set of packages will take to install.
This data will be used by Pluto to give an estimate for installation time:
See the PR for more information.
In the first script, https://github.com/fonsp/package-loading-times/blob/main/most_downloaded_packages.jl we use the julialang pkg server statistics to find out which packages are the most popular.
For the 1000 most popular packages, we use RegistryInstances.jl to find dependencies between those packages.
The result is a txt file that looks like this: https://julia-loading-times-test.netlify.app/top_packages_sorted_with_deps.txt
The second script, https://github.com/fonsp/package-loading-times/blob/main/measure_loading_times.jl loops through the packages and does the timings.
For each package, we set up a temporary environment where we load all the dependencies first. Then, we can measure the installation (i.e. download), precompilation and first load of the single package in isolation.
The result is a csv file that looks like this: https://julia-loading-times-test.netlify.app/pkg_load_times.csv
The notebook estimate.jl
can give you an estimate of how long a given set of dependencies will take to install. You need to have the files in your repository for this to work - you can generate them or download them.
Schermopname.2022-10-20.om.14.32.30.mov
I am still working on a nice/automatic way to make the results public, but you can get the latest results for Julia 1.9 Ubuntu here:
https://julia-loading-times-test.netlify.app/pkg_load_times.csv
https://julia-loading-times-test.netlify.app/top_packages_sorted_with_deps.txt
To see more results for different Julia versions and OSes, check out the Artificats generated by the GHA runs: https://github.com/fonsp/package-loading-times/actions/workflows/main.yml