An open API service indexing awesome lists of open source software.

https://github.com/fonsp/package-loading-times

Automated script to measure the loading time of every Julia package
https://github.com/fonsp/package-loading-times

Last synced: 2 months ago
JSON representation

Automated script to measure the loading time of every Julia package

Awesome Lists containing this project

README

          

# package-loading-times
Automated script to measure the **precompilation, installation and loading** time of every package.

graph showing the loading times for some packages

> *Read the [**interactive notebook** online](https://featured.plutojl.org/basic/package%20latency) to play with the parameters, and pick other packages.*

# How it works

## Most popular packages and dependencies

In the first script, https://github.com/fonsp/package-loading-times/blob/main/most_downloaded_packages.jl we use the [julialang pkg server statistics](https://discourse.julialang.org/t/announcing-package-download-stats/69073) to find out which packages are the most popular.

For the 1000 most popular packages, we use [RegistryInstances.jl](https://github.com/GunnarFarneback/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

## Timing
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 TOML file that looks like this: https://github.com/fonsp/package-loading-times/blob/results-v1/2025-04-14_10-54-53-757_julia_1.10.9/pkg_load_times.toml (TODO this is a test run with only the top 20 packages)

# Use in Pluto.jl
This data is used by Pluto to give an estimate for installation time:

![image](https://github.com/fonsp/Pluto.jl/assets/6933510/1327b0bd-144e-4bca-b97c-ced1b2e955ff)

*See the [PR](https://github.com/fonsp/Pluto.jl/pull/2672) for more information*.

# Results
You can explore the results in an interactive dashboard in [this online notebook](https://featured.plutojl.org/basic/package%20latency). The notebook is stored in https://github.com/JuliaPluto/featured , feel free to make a PR to contribute to it.

You can see all result data in the [`results_v1` branch](https://github.com/fonsp/package-loading-times/tree/results-v1).

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

You can get the old results for Julia 1.9 Ubuntu here: (these are used by the Pluto.jl GUI)

https://julia-loading-times-test.netlify.app/pkg_load_times.csv

https://julia-loading-times-test.netlify.app/top_packages_sorted_with_deps.txt