Skip to content

Regression in package loading time from 1.10 -> 1.11 -> nightly #57970

@fingolfin

Description

@fingolfin

We have noticed that using for several packages got quite noticeably slower from 1.10 to 1.11 to master for several of our packages.

As far as I can tell, the slowdown is before our __init__ methods get run (determined by inserting some code at the start and end of our __init__ methods that call Base.time_ns() and store the result; then comparing it with the time_ns() value just before using XYZ is executed).

Here are the summaries for Hecke. All measurements done on a MacBook Pro M1 Max with macOS 12.7.6; and a second time on a Linux machine with 2x AMD EPYC 9554 64-Core Processor.

macOS with Julia 1.10.9

julia> @time @eval using Hecke
 _    _           _
| |  | |         | |         |  Software package for
| |__| | ___  ___| | _____   |  algorithmic algebraic number theory
|  __  |/ _ \/ __| |/ / _ \  |
| |  | |  __/ (__|   <  __/  |  Manual: https://thofma.github.io/Hecke.jl
|_|  |_|\___|\___|_|\_\___|  |  Version 0.35.16-dev
  1.046861 seconds (1.02 M allocations: 71.563 MiB, 3.63% gc time, 3.74% compilation time)

macOS with Julia 1.11.4

julia> @time @eval using Hecke
 _    _           _
| |  | |         | |         |  Software package for
| |__| | ___  ___| | _____   |  algorithmic algebraic number theory
|  __  |/ _ \/ __| |/ / _ \  |
| |  | |  __/ (__|   <  __/  |  Manual: https://thofma.github.io/Hecke.jl
|_|  |_|\___|\___|_|\_\___|  |  Version 0.35.16-dev
  1.880171 seconds (3.52 M allocations: 200.677 MiB, 5.19% gc time, 27.90% compilation time: 91% of which was recompilation)

macOS with Julia nightly 1.13.0-DEV.329 (2025-03-31), Commit 6d83987

julia> @time @eval using Hecke
 _    _           _
| |  | |         | |         |  Software package for
| |__| | ___  ___| | _____   |  algorithmic algebraic number theory
|  __  |/ _ \/ __| |/ / _ \  |
| |  | |  __/ (__|   <  __/  |  Manual: https://thofma.github.io/Hecke.jl
|_|  |_|\___|\___|_|\_\___|  |  Version 0.35.16-dev
  2.507444 seconds (4.74 M allocations: 248.215 MiB, 5.57% gc time, 5.99% compilation time: 22% of which was recompilation)

Doing the same on a Linux machine with 2x AMD EPYC 9554 64-Core Processor and 1.5 TB of RAM:

With Julia 1.10.9:

julia> @time @eval using Hecke
 _    _           _
| |  | |         | |         |  Software package for
| |__| | ___  ___| | _____   |  algorithmic algebraic number theory
|  __  |/ _ \/ __| |/ / _ \  |
| |  | |  __/ (__|   <  __/  |  Manual: https://thofma.github.io/Hecke.jl
|_|  |_|\___|\___|_|\_\___|  |  Version 0.35.16-dev
  1.877488 seconds (1.03 M allocations: 73.516 MiB, 6.12% gc time, 3.49% compilation time)

With Julia 1.11.4:

julia> @time @eval using Hecke
 _    _           _
| |  | |         | |         |  Software package for
| |__| | ___  ___| | _____   |  algorithmic algebraic number theory
|  __  |/ _ \/ __| |/ / _ \  |
| |  | |  __/ (__|   <  __/  |  Manual: https://thofma.github.io/Hecke.jl
|_|  |_|\___|\___|_|\_\___|  |  Version 0.35.16-dev
  3.156934 seconds (3.93 M allocations: 226.677 MiB, 11.12% gc time, 28.32% compilation time: 88% of which was recompilation)

With Julia nightly, Version 1.13.0-DEV.340 (2025-04-01), Commit 13311f3

julia> @time @eval using Hecke
 _    _           _
| |  | |         | |         |  Software package for
| |__| | ___  ___| | _____   |  algorithmic algebraic number theory
|  __  |/ _ \/ __| |/ / _ \  |
| |  | |  __/ (__|   <  __/  |  Manual: https://thofma.github.io/Hecke.jl
|_|  |_|\___|\___|_|\_\___|  |  Version 0.35.16-dev
  4.705098 seconds (5.38 M allocations: 281.009 MiB, 11.02% gc time, 5.04% compilation time: 24% of which was recompilation)

I can also see this in other packages, e.g. GAP.jl, and even in the pure Julia AbstractAlgebra.jl (though there the numbers are all very small to start with: 0.216439 seconds -> 0.247941 seconds -> 0.421895 seconds)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions