Skip to content

Instantly share code, notes, and snippets.

@ImreSamu
Created August 3, 2020 10:42
Julia1.5rc2 Package compiler test 2020Aug03
FROM julia:1.5-rc
RUN apt-get update \
&& apt-get install -y \
build-essential \
cmake \
gfortran \
git \
libatomic1 \
m4 \
perl \
pkg-config \
python \
wget \
&& rm -rf /var/lib/apt/lists/*
RUN julia -e 'using Pkg; Pkg.add([ \
"Revise","JuliaFormatter", \
"LanguageServer", \
"PackageCompiler", \
"EllipsisNotation", "Parameters", "JSON2", \
"Distributions", \
"OhMyREPL", \
"Plots", \
"Flux","Zygote" \
]) \
;Pkg.precompile()'
RUN julia -e 'using Flux, Zygote;' \
&& julia -e 'using InteractiveUtils; versioninfo()'
FROM jpct15base
RUN julia --trace-compile="traced.jl" \
-e 'using \
Revise, JuliaFormatter, \
LanguageServer, \
PackageCompiler, \
EllipsisNotation, Parameters, JSON2, \
Distributions, \
OhMyREPL, \
Plots, \
Flux, Zygote'
RUN julia -e 'using PackageCompiler; \
PackageCompiler.create_sysimage([ \
:Revise, :JuliaFormatter, \
:LanguageServer, \
:PackageCompiler, \
:EllipsisNotation, :Parameters, :JSON2, \
:Distributions, \
:OhMyREPL, \
:Plots, \
:Flux, :Zygote \
]; precompile_statements_file="traced.jl", replace_default=true) \
'
RUN julia -e 'using PackageCompiler; \
PackageCompiler.create_sysimage([ \
:Revise, :JuliaFormatter, \
:LanguageServer, \
:PackageCompiler, \
:EllipsisNotation, :Parameters, :JSON2, \
:Distributions, \
:OhMyREPL, \
:Plots, \
:Flux, :Zygote \
]; precompile_statements_file="traced.jl", replace_default=true) \
'
RUN julia -e 'using Flux, Zygote;' \
&& julia -e 'using InteractiveUtils; versioninfo()'
FROM jpct15base
RUN julia --trace-compile="traced.jl" \
-e 'using \
Revise, JuliaFormatter, \
LanguageServer, \
PackageCompiler, \
EllipsisNotation, Parameters, JSON2, \
Distributions, \
OhMyREPL, \
Plots, \
Flux, Zygote'
RUN julia -e 'using PackageCompiler; \
PackageCompiler.create_sysimage([ \
:Revise, :JuliaFormatter, \
:LanguageServer, \
:PackageCompiler, \
:EllipsisNotation, :Parameters, :JSON2, \
:Distributions, \
:OhMyREPL, \
:Plots, \
:Flux, :Zygote \
]; precompile_statements_file="traced.jl", replace_default=true) \
'
RUN julia -e 'using Flux, Zygote;' \
&& julia -e 'using InteractiveUtils; versioninfo()'
FROM jpct15base
RUN julia --trace-compile="traced.jl" \
-e 'using \
Revise, JuliaFormatter, \
LanguageServer, \
PackageCompiler, \
EllipsisNotation, Parameters, JSON2, \
Distributions, \
OhMyREPL, \
Plots, \
Flux, Zygote'
RUN julia -e 'using PackageCompiler; \
PackageCompiler.create_sysimage([ \
:Revise, :JuliaFormatter, \
:LanguageServer, \
:PackageCompiler, \
:EllipsisNotation, :Parameters, :JSON2, \
:Distributions, \
:OhMyREPL, \
:Plots, \
:Flux, :Zygote \
]; precompile_statements_file="traced.jl", replace_default=true) \
'
RUN julia --trace-compile="traced2.jl" \
-e 'using \
Revise, JuliaFormatter, \
LanguageServer, \
PackageCompiler, \
EllipsisNotation, Parameters, JSON2, \
Distributions, \
OhMyREPL, \
Plots, \
Flux, Zygote'
RUN julia -e 'using PackageCompiler; \
PackageCompiler.create_sysimage([ \
:Revise, :JuliaFormatter, \
:LanguageServer, \
:PackageCompiler, \
:EllipsisNotation, :Parameters, :JSON2, \
:Distributions, \
:OhMyREPL, \
:Plots, \
:Flux, :Zygote \
]; precompile_statements_file="traced2.jl", replace_default=true) \
'
RUN julia -e 'using Flux, Zygote;' \
&& julia -e 'using InteractiveUtils; versioninfo()'

https://discourse.julialang.org/t/slow-julia-startup-time-after-sysimage-creation-and-an-unbelievable-observation/44102

jpct15base simple package recompile

33
v"1.5.0-rc2.0"

real	0m0.474s
user	0m0.820s
sys	0m0.685s

jpct15t1 trace + create_sysimage

152
v"1.5.0-rc2.0"

real	0m3.523s
user	0m3.618s
sys	0m0.942s

jpct15t2 trace + create_sysimage(traced.jl) + trace2 + create_sysimage2(traced2.jl)

152
v"1.5.0-rc2.0"

real	0m3.479s
user	0m3.560s
sys	0m0.952s

jpct15c2 trace + 2x create_sysimage(traced.jl)

152
v"1.5.0-rc2.0"

real	0m3.485s
user	0m3.566s
sys	0m0.882s
#!/usr/bin/env bash
set -o errexit
set -o pipefail
set -o nounset
docker build --pull -t jpct15base -f Dockerfile.jpct15base .
docker build -t jpct15t1 -f Dockerfile.jpct15t1 .
docker build -t jpct15t2 -f Dockerfile.jpct15t2 .
docker build -t jpct15c2 -f Dockerfile.jpct15c2 .
echo "# simple julia packagecompiler test " > output.md
echo " https://discourse.julialang.org/t/slow-julia-startup-time-after-sysimage-creation-and-an-unbelievable-observation/44102 " > output.md
test() {
echo " " >> output.md
echo "### $1 $2" >> output.md
echo "\`\`\`" >> output.md
docker run -it --rm $1 bash -c 'time julia -E "println(length(Base.loaded_modules));VERSION"' >> output.md
echo "\`\`\`" >> output.md
echo " " >> output.md
}
test jpct15base "simple package recompile"
test jpct15t1 "trace + create_sysimage"
test jpct15t2 "trace + create_sysimage(traced.jl) + trace2 + create_sysimage2(traced2.jl)"
test jpct15c2 "trace + 2x create_sysimage(traced.jl)"
echo "done"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment