Windows is slower than WSL2 in loading GR, Preferences, Julia 1.9.0-beta2

I recently installed WSL 2. I noticed that @time_imports reports faster import times for Preferences and GR under WSL2 than under Windows. The loading time for Preferences.jl is appears to be 10x worse.

# WSL 2
julia> @time_imports using GR
     24.3 ms  Preferences
     90.1 ms  GR 4.56% compilation time
# Windows
julia> @time_imports using GR
    263.1 ms  Preferences
    162.5 ms  GR 4.22% compilation time
Full `@time_imports` output for WSL2 and Windows
# WSL2 

julia> @time_imports using GR
     24.3 ms  Preferences
      0.3 ms  JLLWrappers
      3.3 ms  Bzip2_jll 88.78% compilation time
      0.4 ms  Libiconv_jll
      0.3 ms  Libffi_jll
      0.1 ms  Zlib_jll
      0.6 ms  XML2_jll
      0.4 ms  Gettext_jll
      0.2 ms  PCRE2_jll
      0.5 ms  Libmount_jll
      1.2 ms  Glib_jll
      0.3 ms  Pixman_jll
      0.3 ms  libpng_jll
      0.4 ms  FreeType2_jll
      0.3 ms  Libuuid_jll
      0.4 ms  Expat_jll
      4.4 ms  Fontconfig_jll 83.58% compilation time
      0.4 ms  Libgpg_error_jll
      0.4 ms  Libgcrypt_jll
      0.6 ms  XSLT_jll
      0.3 ms  Xorg_libXau_jll
      0.4 ms  Xorg_libXdmcp_jll
      0.2 ms  Xorg_libpthread_stubs_jll
      1.7 ms  Xorg_libxcb_jll
      0.2 ms  Xorg_xtrans_jll
      0.5 ms  Xorg_libX11_jll
      0.3 ms  Xorg_libXext_jll
      0.3 ms  Xorg_libXrender_jll
      0.3 ms  LZO_jll
      1.0 ms  Cairo_jll
      0.4 ms  FriBidi_jll
      0.3 ms  Graphite2_jll
      0.6 ms  HarfBuzz_jll
      0.4 ms  libass_jll
      0.4 ms  libfdk_aac_jll
      0.4 ms  LAME_jll
      0.4 ms  Ogg_jll
      0.6 ms  libvorbis_jll
      0.5 ms  libaom_jll
      0.4 ms  x264_jll
      0.4 ms  x265_jll
      0.7 ms  OpenSSL_jll
      0.3 ms  Opus_jll
      2.7 ms  FFMPEG_jll
      1.1 ms  Libglvnd_jll
      0.4 ms  Xorg_libXfixes_jll
      0.4 ms  Xorg_libXcursor_jll
      0.4 ms  Xorg_libXi_jll
      0.4 ms  Xorg_libXinerama_jll
      0.5 ms  Xorg_libXrandr_jll
      0.5 ms  GLFW_jll
      0.5 ms  JpegTurbo_jll
      0.3 ms  LERC_jll
      0.4 ms  Zstd_jll
      0.5 ms  Libtiff_jll
      0.4 ms  Xorg_xcb_util_jll
      0.4 ms  Xorg_xcb_util_wm_jll
      0.4 ms  Xorg_xcb_util_image_jll
      0.3 ms  Xorg_xcb_util_keysyms_jll
      0.4 ms  Xorg_xcb_util_renderutil_jll
      0.4 ms  Xorg_libxkbfile_jll
      0.3 ms  Xorg_xkbcomp_jll
      0.2 ms  Xorg_xkeyboard_config_jll
      0.6 ms  Wayland_jll
      0.2 ms  Wayland_protocols_jll
      0.5 ms  xkbcommon_jll
      5.1 ms  Qt5Base_jll
      0.5 ms  GR_jll
     90.1 ms  GR 4.56% compilation time
# Windows
julia> @time_imports using GR
    263.1 ms  Preferences
      1.4 ms  JLLWrappers
     12.6 ms  Bzip2_jll 75.61% compilation time
      1.4 ms  Libiconv_jll
      0.9 ms  Libffi_jll
      0.4 ms  Zlib_jll
      1.4 ms  XML2_jll
      1.2 ms  Gettext_jll
      0.8 ms  PCRE2_jll
      4.2 ms  Glib_jll
      1.4 ms  Pixman_jll
      1.0 ms  libpng_jll
      1.0 ms  FreeType2_jll
      0.4 ms  Libuuid_jll
      0.9 ms  Expat_jll
      5.9 ms  Fontconfig_jll 76.18% compilation time
      1.0 ms  LZO_jll
      3.1 ms  Cairo_jll
      1.0 ms  FriBidi_jll
      1.0 ms  Graphite2_jll
      1.6 ms  HarfBuzz_jll
      1.2 ms  libass_jll
      1.3 ms  libfdk_aac_jll
      1.0 ms  LAME_jll
      0.9 ms  Ogg_jll
      1.4 ms  libvorbis_jll
      1.8 ms  libaom_jll
      1.1 ms  x264_jll
      1.4 ms  x265_jll
      2.3 ms  OpenSSL_jll
      1.2 ms  Opus_jll
      8.2 ms  FFMPEG_jll
      1.0 ms  GLFW_jll
      1.5 ms  JpegTurbo_jll
      1.0 ms  LERC_jll
      1.0 ms  Zstd_jll
      1.2 ms  Libtiff_jll
     20.5 ms  Qt5Base_jll
      0.8 ms  GR_jll
    162.5 ms  GR 4.22% compilation time
1 Like

That’s somewhat surprising. One possibility is that NTFS is a really slow file system, but it would be good to know if there was another reason.

I suspect it is likely a persistent issue from an earlier report that I made:

Here’s the profile for Windows:

julia> Profile.print(; C = true, mincount = 5)
Overhead β•Ž [+additional indent] Count File:Line; Function
=========================================================
 β•Ž30 C:\windows\SYSTEM32\ntdll.dll:?; RtlUserThreadStart
 β•Ž 30 C:\windows\System32\KERNEL32.DLL:?; BaseThreadInitThunk
 β•Ž  30 C:/workdir/cli\loader_exe.c:59; mainCRTStartup
 β•Ž   30 C:/workdir/src\jlapi.c:717; jl_repl_entrypoint
 β•Ž    30 C:/workdir/src\jlapi.c:573; true_main
 β•Ž     30 C:/workdir/src\julia.h:1874; jl_apply
 β•Ž    β•Ž 30 C:\Users\kittisopikulm\.julia\juliaup\julia-1.9.0-beta2+0.x64.w64.mingw32\lib\julia\sys.dll:?; jfptr__start_48510.clone_1
 β•Ž    β•Ž  30 @Base\client.jl:522; _start()
 β•Ž    β•Ž   30 @Base\client.jl:322; exec_options(opts::Base.JLOptions)
 β•Ž    β•Ž    30 @Base\client.jl:405; run_main_repl(interactive::Bool, quiet::Bool, banner::Bool, history_file::Bool, color_set::Bool)
 β•Ž    β•Ž     30 @Base\essentials.jl:813; invokelatest
 β•Ž    β•Ž    β•Ž 30 @Base\essentials.jl:816; #invokelatest#2
 β•Ž    β•Ž    β•Ž  30 C:/workdir/src\builtins.c:774; jl_f__call_latest
 β•Ž    β•Ž    β•Ž   30 C:/workdir/src\julia.h:1874; jl_apply
 β•Ž    β•Ž    β•Ž    30 C:\Users\kittisopikulm\.julia\juliaup\julia-1.9.0-beta2+0.x64.w64.mingw32\lib\julia\sys.dll:?; jfptr_YY.1018_30785.clone_1
 β•Ž    β•Ž    β•Ž     30 @Base\client.jl:421; (::Base.var"#1018#1020"{Bool, Bool, Bool})(REPL::Module)
 β•Ž    β•Ž    β•Ž    β•Ž 30 C:\Users\kittisopikulm\.julia\juliaup\julia-1.9.0-beta2+0.x64.w64.mingw32\lib\julia\sys.dll:?; jfptr_run_repl_61782.clone_1
 β•Ž    β•Ž    β•Ž    β•Ž  30 C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:362; run_repl(repl::REPL.AbstractREPL, consumer::Any)
 β•Ž    β•Ž    β•Ž    β•Ž   30 C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:376; run_repl(repl::REPL.AbstractREPL, consumer::Any; backend_on_current_task::Bool, backend::Any)
 β•Ž    β•Ž    β•Ž    β•Ž    30 C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:230; kwcall
 β•Ž    β•Ž    β•Ž    β•Ž     30 C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:233; start_repl_backend(backend::REPL.REPLBackend, consumer::Any; get_module::Function)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 30 C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:248; repl_backend_loop(backend::REPL.REPLBackend, get_module::Function)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  30 C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:152; eval_user_input(ast::Any, backend::REPL.REPLBackend, mod::Module)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   30 @Base\boot.jl:370; eval
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    30 C:/workdir/src\toplevel.c:971; ijl_toplevel_eval_in
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     30 C:/workdir/src\toplevel.c:921; ijl_toplevel_eval
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 30 C:/workdir/src\toplevel.c:856; jl_toplevel_eval_flex
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  30 C:/workdir/src\toplevel.c:903; jl_toplevel_eval_flex
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   30 REPL[3]:0; top-level scope
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    30 @Base\timing.jl:273; top-level scope
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     28 C:\workdir\usr\share\julia\stdlib\v1.9\Profile\src\Profile.jl:27; macro expansion
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 28 C:/workdir/src\toplevel.c:731; jl_toplevel_eval_flex
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  28 C:/workdir/src\toplevel.c:503; eval_import_path
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   28 C:/workdir/src\toplevel.c:466; call_require
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    28 C:/workdir/src\julia.h:1874; jl_apply
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     28 C:\Users\kittisopikulm\.julia\juliaup\julia-1.9.0-beta2+0.x64.w64.mingw32\lib\julia\sys.dll:?; jfptr_require_56277.clone_1
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 28 @Base\loading.jl:1466; require(into::Module, mod::Symbol)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  28 @Base\lock.jl:267; macro expansion
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   28 @Base\loading.jl:1503; macro expansion
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    28 @Base\loading.jl:1515; _require_prelocked(uuidkey::Base.PkgId, env::String)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     28 @Base\loading.jl:1638; _require(pkg::Base.PkgId, env::String)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 25 @Base\loading.jl:1361; _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  24 @Base\loading.jl:949; _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any})
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   24 C:/workdir/src\staticdata.c:3466; ijl_restore_package_image_from_file
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    24 C:/workdir/src\staticdata.c:3353; jl_restore_incremental_from_buf
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     22 C:/workdir/src\staticdata.c:3316; jl_restore_package_image_from_stream
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 20 C:/workdir/src\staticdata_utils.c:1135; jl_insert_backedges
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  20 C:/workdir/src\staticdata_utils.c:921; jl_verify_edges
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   20 C:/workdir/src\gf.c:2077; ijl_matching_methods
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    6  C:/workdir/src\gf.c:3139; ml_matches
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     5  C:/workdir/src\typemap.c:545; jl_typemap_intersection_visitor
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 5  C:/workdir/src\typemap.c:586; jl_typemap_intersection_visitor
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  5  C:/workdir/src\typemap.c:407; jl_typemap_intersection_array_visitor
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   5  C:/workdir/src\typemap.c:457; jl_typemap_intersection_node_visitor
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    5  C:/workdir/src\subtype.c:3484; jl_type_intersection_env_s
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    12 C:/workdir/src\gf.c:3513; ml_matches
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     12 C:/workdir/src\gf.c:1164; cache_method
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 5  C:/workdir/src\gf.c:3346; ml_matches
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  5  C:/workdir/src\gf.c:1750; jl_type_intersection2
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   5  C:/workdir/src\subtype.c:3484; jl_type_intersection_env_s
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    5  C:/workdir/src\subtype.c:3247; intersect_all
Total snapshots: 30. Utilization: 100% across all threads and tasks. Use the `groupby` kwarg to break down by thread and/or task

I suspect it is likely a persistent issue from an earlier report that I made:

Here is a profile for Windows:

julia> using Profile

julia> Profile.clear()

julia> @time @profile using Preferences
  0.347303 seconds (90.77 k allocations: 5.667 MiB, 8.79% compilation time)

julia> Profile.print(; C = true, mincount = 5)
Overhead β•Ž [+additional indent] Count File:Line; Function
=========================================================
 β•Ž30 C:\windows\SYSTEM32\ntdll.dll:?; RtlUserThreadStart
 β•Ž 30 C:\windows\System32\KERNEL32.DLL:?; BaseThreadInitThunk
 β•Ž  30 C:/workdir/cli\loader_exe.c:59; mainCRTStartup
 β•Ž   30 C:/workdir/src\jlapi.c:717; jl_repl_entrypoint
 β•Ž    30 C:/workdir/src\jlapi.c:573; true_main
 β•Ž     30 C:/workdir/src\julia.h:1874; jl_apply
 β•Ž    β•Ž 30 C:\Users\kittisopikulm\.julia\juliaup\julia-1.9.0-beta2+0.x64.w64.mingw32\lib\julia\sys.dll:?; jfptr__start_48510.clone_1
 β•Ž    β•Ž  30 @Base\client.jl:522; _start()
 β•Ž    β•Ž   30 @Base\client.jl:322; exec_options(opts::Base.JLOptions)
 β•Ž    β•Ž    30 @Base\client.jl:405; run_main_repl(interactive::Bool, quiet::Bool, banner::Bool, history_file::Bool, color_set::Bool)
 β•Ž    β•Ž     30 @Base\essentials.jl:813; invokelatest
 β•Ž    β•Ž    β•Ž 30 @Base\essentials.jl:816; #invokelatest#2
 β•Ž    β•Ž    β•Ž  30 C:/workdir/src\builtins.c:774; jl_f__call_latest
 β•Ž    β•Ž    β•Ž   30 C:/workdir/src\julia.h:1874; jl_apply
 β•Ž    β•Ž    β•Ž    30 C:\Users\kittisopikulm\.julia\juliaup\julia-1.9.0-beta2+0.x64.w64.mingw32\lib\julia\sys.dll:?; jfptr_YY.1018_30785.clone_1
 β•Ž    β•Ž    β•Ž     30 @Base\client.jl:421; (::Base.var"#1018#1020"{Bool, Bool, Bool})(REPL::Module)
 β•Ž    β•Ž    β•Ž    β•Ž 30 C:\Users\kittisopikulm\.julia\juliaup\julia-1.9.0-beta2+0.x64.w64.mingw32\lib\julia\sys.dll:?; jfptr_run_repl_61782.clone_1
 β•Ž    β•Ž    β•Ž    β•Ž  30 C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:362; run_repl(repl::REPL.AbstractREPL, consumer::Any)
 β•Ž    β•Ž    β•Ž    β•Ž   30 C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:376; run_repl(repl::REPL.AbstractREPL, consumer::Any; backend_on_current_task::Bool, backend::Any)
 β•Ž    β•Ž    β•Ž    β•Ž    30 C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:230; kwcall
 β•Ž    β•Ž    β•Ž    β•Ž     30 C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:233; start_repl_backend(backend::REPL.REPLBackend, consumer::Any; get_module::Function)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 30 C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:248; repl_backend_loop(backend::REPL.REPLBackend, get_module::Function)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  30 C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:152; eval_user_input(ast::Any, backend::REPL.REPLBackend, mod::Module)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   30 @Base\boot.jl:370; eval
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    30 C:/workdir/src\toplevel.c:971; ijl_toplevel_eval_in
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     30 C:/workdir/src\toplevel.c:921; ijl_toplevel_eval
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 30 C:/workdir/src\toplevel.c:856; jl_toplevel_eval_flex
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  30 C:/workdir/src\toplevel.c:903; jl_toplevel_eval_flex
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   30 REPL[3]:0; top-level scope
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    30 @Base\timing.jl:273; top-level scope
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     28 C:\workdir\usr\share\julia\stdlib\v1.9\Profile\src\Profile.jl:27; macro expansion
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 28 C:/workdir/src\toplevel.c:731; jl_toplevel_eval_flex
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  28 C:/workdir/src\toplevel.c:503; eval_import_path
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   28 C:/workdir/src\toplevel.c:466; call_require
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    28 C:/workdir/src\julia.h:1874; jl_apply
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     28 C:\Users\kittisopikulm\.julia\juliaup\julia-1.9.0-beta2+0.x64.w64.mingw32\lib\julia\sys.dll:?; jfptr_require_56277.clone_1
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 28 @Base\loading.jl:1466; require(into::Module, mod::Symbol)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  28 @Base\lock.jl:267; macro expansion
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   28 @Base\loading.jl:1503; macro expansion
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    28 @Base\loading.jl:1515; _require_prelocked(uuidkey::Base.PkgId, env::String)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     28 @Base\loading.jl:1638; _require(pkg::Base.PkgId, env::String)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 25 @Base\loading.jl:1361; _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128)
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  24 @Base\loading.jl:949; _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any})
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   24 C:/workdir/src\staticdata.c:3466; ijl_restore_package_image_from_file
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    24 C:/workdir/src\staticdata.c:3353; jl_restore_incremental_from_buf
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     22 C:/workdir/src\staticdata.c:3316; jl_restore_package_image_from_stream
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 20 C:/workdir/src\staticdata_utils.c:1135; jl_insert_backedges
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  20 C:/workdir/src\staticdata_utils.c:921; jl_verify_edges
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   20 C:/workdir/src\gf.c:2077; ijl_matching_methods
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    6  C:/workdir/src\gf.c:3139; ml_matches
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     5  C:/workdir/src\typemap.c:545; jl_typemap_intersection_visitor
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 5  C:/workdir/src\typemap.c:586; jl_typemap_intersection_visitor
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  5  C:/workdir/src\typemap.c:407; jl_typemap_intersection_array_visitor
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   5  C:/workdir/src\typemap.c:457; jl_typemap_intersection_node_visitor
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    5  C:/workdir/src\subtype.c:3484; jl_type_intersection_env_s
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    12 C:/workdir/src\gf.c:3513; ml_matches
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž     12 C:/workdir/src\gf.c:1164; cache_method
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž 5  C:/workdir/src\gf.c:3346; ml_matches
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž  5  C:/workdir/src\gf.c:1750; jl_type_intersection2
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž   5  C:/workdir/src\subtype.c:3484; jl_type_intersection_env_s
 β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    β•Ž    5  C:/workdir/src\subtype.c:3247; intersect_all
Total snapshots: 30. Utilization: 100% across all threads and tasks. Use the `groupby` kwarg to break down by thread and/or task
1 Like

I can not repro this:

Windows:

julia> @time_imports using GR
     13.0 ms  Preferences
...
     46.5 ms  GR 7.82% compilation time

WSL:

julia> @time_imports using GR
     12.1 ms  Preferences
...
     39.0 ms  GR 6.57% compilation time

Can you try clear out .julia/compiled, do a re-precompile and check again.

@kristoffer.carlsson did you try WSL (as you said) or WSL2 (as @mkitti) said? i believe it should be a big difference (WSL2 faster than WSL).

My results in Julia 1.9.4

Windows 10

@time_imports using GR
      9.6 ms  Preferences
...
      108.6 ms  GR

Same machine, same disk on WSL2 (Ubuntu 22.04)

 @time_imports using GR
      8.8 ms  Preferences
...
      32.3 ms  GR
Full output

Windows 10

@time_imports using GR
      9.6 ms  Preferences
      0.4 ms  JLLWrappers
      4.9 ms  Bzip2_jll 87.56% compilation time
      0.9 ms  Libiconv_jll
      0.4 ms  Libffi_jll
      4.5 ms  CompilerSupportLibraries_jll 90.18% compilation time
      0.2 ms  Zlib_jll
      0.7 ms  XML2_jll
      0.6 ms  Gettext_jll
      0.4 ms  PCRE2_jll
      2.5 ms  Glib_jll
      0.9 ms  Pixman_jll
      1.0 ms  libpng_jll
      0.8 ms  FreeType2_jll
      0.2 ms  Libuuid_jll
      0.6 ms  Expat_jll
      5.0 ms  Fontconfig_jll 80.13% compilation time
      0.6 ms  LZO_jll
      2.0 ms  Cairo_jll
      0.6 ms  FriBidi_jll
      0.6 ms  Graphite2_jll
      1.0 ms  HarfBuzz_jll
      0.8 ms  libass_jll
      1.1 ms  libfdk_aac_jll
      0.6 ms  LAME_jll
      0.6 ms  Ogg_jll
      1.0 ms  libvorbis_jll
      1.2 ms  libaom_jll
      0.7 ms  x264_jll
      0.9 ms  x265_jll
      1.2 ms  OpenSSL_jll
      0.8 ms  Opus_jll
      5.1 ms  FFMPEG_jll
      0.7 ms  GLFW_jll
      1.2 ms  JpegTurbo_jll
      0.8 ms  LERC_jll
      0.8 ms  XZ_jll
      0.7 ms  Zstd_jll
      0.7 ms  Libtiff_jll
      0.3 ms  libinput_jll
      0.2 ms  Xorg_libXext_jll
      0.2 ms  Xorg_libxcb_jll
      0.3 ms  Xorg_xcb_util_wm_jll
      0.3 ms  Xorg_xcb_util_cursor_jll
      0.3 ms  Xorg_xcb_util_image_jll
      0.3 ms  Xorg_xcb_util_keysyms_jll
      0.3 ms  Xorg_xcb_util_renderutil_jll
      0.3 ms  Xorg_libXrender_jll
     14.7 ms  Xorg_libSM_jll
      0.3 ms  xkbcommon_jll
      0.2 ms  Libglvnd_jll
      1.0 ms  Vulkan_Loader_jll
      8.5 ms  Qt6Base_jll
      0.8 ms  GR_jll
    108.6 ms  GR

WSL2 (Ubuntu, 22.04)

@time_imports using GR
      8.8 ms  Preferences
      0.3 ms  JLLWrappers
      4.1 ms  Bzip2_jll 91.69% compilation time
      0.5 ms  Libiconv_jll
      0.2 ms  Libffi_jll
      4.1 ms  CompilerSupportLibraries_jll 90.51% compilation time
      0.1 ms  Zlib_jll
      0.3 ms  XML2_jll
      0.3 ms  Gettext_jll
      0.1 ms  PCRE2_jll
      0.2 ms  Libmount_jll
      0.6 ms  Glib_jll
      0.2 ms  Pixman_jll
      0.2 ms  libpng_jll
      0.2 ms  FreeType2_jll
      0.2 ms  Libuuid_jll
      0.2 ms  Expat_jll
      3.2 ms  Fontconfig_jll 89.00% compilation time
      0.3 ms  Libgpg_error_jll
      0.2 ms  Libgcrypt_jll
      0.3 ms  XSLT_jll
      0.2 ms  Xorg_libXau_jll
      0.2 ms  Xorg_libXdmcp_jll
      0.1 ms  Xorg_libpthread_stubs_jll
      1.2 ms  Xorg_libxcb_jll
      0.1 ms  Xorg_xtrans_jll
      0.3 ms  Xorg_libX11_jll
      0.2 ms  Xorg_libXext_jll
      0.2 ms  Xorg_libXrender_jll
      0.2 ms  LZO_jll
      0.6 ms  Cairo_jll
      0.2 ms  FriBidi_jll
      0.2 ms  Graphite2_jll
      0.3 ms  HarfBuzz_jll
      0.2 ms  libass_jll
      0.2 ms  libfdk_aac_jll
      0.2 ms  LAME_jll
      0.2 ms  Ogg_jll
      0.3 ms  libvorbis_jll
      0.3 ms  libaom_jll
      0.3 ms  x264_jll
      0.2 ms  x265_jll
      0.5 ms  OpenSSL_jll
      0.2 ms  Opus_jll
      1.5 ms  FFMPEG_jll
      0.7 ms  Libglvnd_jll
      0.2 ms  Xorg_libXfixes_jll
      0.2 ms  Xorg_libXcursor_jll
      0.2 ms  Xorg_libXi_jll
      0.2 ms  Xorg_libXinerama_jll
      0.2 ms  Xorg_libXrandr_jll
      0.2 ms  GLFW_jll
      0.3 ms  JpegTurbo_jll
      0.2 ms  LERC_jll
      0.3 ms  XZ_jll
      0.2 ms  Zstd_jll
      0.2 ms  Libtiff_jll
      0.1 ms  gperf_jll
      0.2 ms  eudev_jll
      0.2 ms  mtdev_jll
      0.2 ms  libevdev_jll
      0.2 ms  libinput_jll
      0.2 ms  Xorg_xcb_util_jll
      0.2 ms  Xorg_xcb_util_wm_jll
      0.2 ms  Xorg_xcb_util_image_jll
      0.2 ms  Xorg_xcb_util_renderutil_jll
      0.3 ms  Xorg_xcb_util_cursor_jll
      0.2 ms  Xorg_xcb_util_keysyms_jll
     13.0 ms  Xorg_libICE_jll
     11.5 ms  Xorg_libSM_jll
      0.4 ms  Xorg_libxkbfile_jll
      0.2 ms  Xorg_xkbcomp_jll
      0.2 ms  Xorg_xkeyboard_config_jll
      0.1 ms  EpollShim_jll
      0.4 ms  Wayland_jll
      0.1 ms  Wayland_protocols_jll
      0.3 ms  xkbcommon_jll
      0.3 ms  Vulkan_Loader_jll
      3.2 ms  Qt6Base_jll
      0.4 ms  GR_jll
      32.3 ms  GR

At first glance I’m not sure that there’s actually an issue here, considering that comparing package loading on different OS-es feels like comparing apples to oranges. The functionality that’s being loaded is not the same.

Presumably Xorg and libinput are useless on Windows without WSL, so they wouldn’t be getting loaded at all ideally.

2 Likes