Skip to content
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

33% to 69% startup regression on nightly #57573

Open
PallHaraldsson opened this issue Feb 28, 2025 · 0 comments
Open

33% to 69% startup regression on nightly #57573

PallHaraldsson opened this issue Feb 28, 2025 · 0 comments
Labels
compiler:latency Compiler latency regression 1.12 Regression in the 1.12 release

Comments

@PallHaraldsson
Copy link
Contributor

PallHaraldsson commented Feb 28, 2025

Does anyone know why there's a regression? And why it seems worse under load?

$ hyperfine 'julia +nightly -e ""'
Benchmark 1: julia +nightly -e ""
  Time (mean ± σ):     236.2 ms ±  18.5 ms    [User: 294.3 ms, System: 83.6 ms]
  Range (min … max):   215.0 ms … 259.0 ms    11 runs

$ hyperfine 'julia +1.11 -e ""'
Benchmark 1: julia +1.11 -e ""
  Time (mean ± σ):     181.2 ms ±  13.7 ms    [User: 264.9 ms, System: 58.4 ms]
  Range (min … max):   160.5 ms … 198.2 ms    16 runs

For mean, not min, it's only 30% slower but for max it's 31% or if comparing with Firefox running, 64%. On nightly without it... compared to 1.11 with Firefox, at 69%....

I see no extra precompiles when starting (without a REPL, so not the reason), but more with:

$ julia +nightly --trace-compile=stderr
precompile(Tuple{typeof(Base.setindex!), Base.EnvDict, Bool, String})
precompile(Tuple{typeof(Base.setindex!), Base.EnvDict, Int64, String})
precompile(Tuple{Type{Pair{A, B} where B where A}, Array{String, 1}, Expr})
precompile(Tuple{typeof(Base.print_to_string), String, String, String, String, String, String, String, String, String, String, Vararg{Any}})
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.13.0-DEV.138 (2025-02-28)
 _/ |\__'_|_|_|\__'_|  |  Commit 5f13cd2ddc0 (0 days old master)
|__/                   |

julia> precompile(Tuple{typeof(Base.getproperty), REPL.REPLBackend, Symbol})
precompile(Tuple{typeof(Base.Sort.searchsortedfirst), Array{String, 1}, String})
precompile(Tuple{typeof(Base.insert!), Array{String, 1}, Int64, String})


vs.

$ julia +1.11 --trace-compile=stderr
precompile(Tuple{typeof(Base.setindex!), Base.EnvDict, Bool, String})
precompile(Tuple{typeof(Base.setindex!), Base.EnvDict, Int64, String})
precompile(Tuple{Type{Pair{A, B} where B where A}, Array{String, 1}, Expr})
@oscardssmith oscardssmith added compiler:latency Compiler latency regression 1.12 Regression in the 1.12 release labels Feb 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler:latency Compiler latency regression 1.12 Regression in the 1.12 release
Projects
None yet
Development

No branches or pull requests

2 participants