# Package load speed: Windows vs Linux

**URL:** <https://discourse.julialang.org/t/package-load-speed-windows-vs-linux/93039>\
**Category:** Performance\
**Tags:** windows, startup, ttfx\
**Created:** [January 16, 2023, 7:04pm UTC](https://discourse.julialang.org/t/package-load-speed-windows-vs-linux/93039 "2023-01-16T19:04:48Z")\
**Posts on this page:** 5\
**Page:** 2

<div class="post-metadata">

**Author:** ![tfiers](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tfiers/32/32427_2.png) [@tfiers](https://discourse.julialang.org/u/tfiers)\
**Post date:** [January 23, 2023, 10:10am UTC](https://discourse.julialang.org/t/package-load-speed-windows-vs-linux/93039/21 "2023-01-23T10:10:16Z")

</div>

On VS Code though, I haven’t been able to get the julia-vscode extension working with it: [WSL2: `Failed to precompile LanguageServer` / `Could not start the Julia language server` · Issue #3202 · julia-vscode/julia-vscode · GitHub](https://github.com/julia-vscode/julia-vscode/issues/3202)

---

<div class="post-metadata">

**Author:** ![tfiers](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tfiers/32/32427_2.png) [@tfiers](https://discourse.julialang.org/u/tfiers)\
**Post date:** [January 23, 2023, 12:26pm UTC](https://discourse.julialang.org/t/package-load-speed-windows-vs-linux/93039/22 "2023-01-23T12:26:46Z")

</div>

I did another comparison test, this time on julia 1.8 (.5)

```bash
mkdir timetest1.8

julia-1.8 --project=timetest1.8 -e "using Pkg; pkg\"add https://github.com/tfiers/MyToolbox.jl#11629da\""

julia-1.8 --project=timetest1.8 --startup-file=no -e "@time using MyToolbox"

```

Windows:

```julia
  6.992547 seconds (5.05 M allocations: 335.846 MiB, 5.57% gc time, 44.51% compilation time: 86% of which was recompilation)

```

WSL2:

```julia
  5.466033 seconds (4.47 M allocations: 303.886 MiB, 4.65% gc time, 43.14% compilation time: 83% of which was recompilation)

```

Again, slightly different timings each run, but WSL2 consistently **about 30% faster** , just like on julia 1.9 above.

Also, interestingly, the import times actually _decreased_ from 1.8 → 1.9, just like what KrisC predicted and contrary to what I feared in the OP.

---

<div class="post-metadata">

**Author:** ![tfiers](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tfiers/32/32427_2.png) [@tfiers](https://discourse.julialang.org/u/tfiers)\
**Post date:** [January 23, 2023, 12:49pm UTC](https://discourse.julialang.org/t/package-load-speed-windows-vs-linux/93039/23 "2023-01-23T12:49:11Z")

</div>

Now, actual profiling, and back on 1.9.0-beta3

> [@mkitti](#):
>
> ```julia
> using Profile
> Profile.clear()
> @profile using MyToolbox
> Profile.print(; C = true, format = :flat, sortedby = :count, mincount = 200)
> 
> ```

(running under `julia --startup-file=no --project=timetest` from above; also I changed the `mincount` to 200 instead of 4, as otherwise Discourse wouldn’t let me post that many characters)

> **Windows**
>
> ```julia
> Count Overhead File Line Function
> ===== ======== ==== ==== ========
> 201 0 C:/workdir/src\typemap.c 457 jl_typemap_intersection_node_visitor
> 204 0 C:/workdir/src\subtype.c 2876 intersect_tuple
> 211 0 C:/workdir/src\subtype.c 3220 intersect
> 216 0 C:/workdir/src\gf.c 1197 cache_method
> 222 0 C:/workdir/src\subtype.c 3296 intersect_all
> 222 0 C:/workdir/src\staticdata_utils.c 856 jl_insert_methods
> 222 0 C:/workdir/src\staticdata.c 3318 jl_restore_package_image_from_stream
> 226 0 C:/workdir/src\gf.c 3550 ml_matches
> 235 0 ...al\julias\julia-1.9\lib\julia\sys.dll ? jfptr_open_39372.clone_1
> 235 0 @Base\iostream.jl 355 open(fname::String, mode::String)
> 254 0 C:/workdir/src\subtype.c 3533 jl_type_intersection_env_s
> 276 0 @Base\io.jl 393 #open#409
> 297 0 @Base\iostream.jl 275 kwcall
> 297 0 @Base\iostream.jl 356 open(fname::String, mode::String; lock::Bool)
> 328 0 C:/workdir/src\gf.c 2112 ijl_matching_methods
> 330 0 C:/workdir/src\staticdata_utils.c 923 jl_verify_edges
> 332 0 C:/workdir/src\staticdata_utils.c 1137 jl_insert_backedges
> 337 0 C:/workdir/src/support\ios.c 950 ios_file
> 337 0 C:\WINDOWS\System32\msvcrt.dll ? wopen
> 337 0 C:\WINDOWS\System32\msvcrt.dll ? wmktemp_s
> 338 0 @Base\iostream.jl 293 #open#705
> 348 0 @Base\loading.jl 2756 stale_cachefile(modkey::Base.PkgId, build_id::UInt128, mo...
> 348 0 @Base\loading.jl 2220 isvalid_pkgimage_crc(f::IOStream, ocachefile::String)
> 382 0 C:/workdir/src\staticdata.c 3323 jl_restore_package_image_from_stream
> 389 0 @Base\io.jl 392 open
> 404 0 C:\WINDOWS\SYSTEM32\ntdll.dll ? NtCreateFile
> 405 0 C:\WINDOWS\System32\KERNELBASE.dll ? CreateFileW
> 507 0 @Base\loading.jl 1372 _require_search_from_serialized(pkg::Base.PkgId, sourcepa...
> 638 0 @Base\loading.jl 2612 stale_cachefile
> 730 0 C:/workdir/src\staticdata.c 3360 jl_restore_incremental_from_buf
> 730 0 C:/workdir/src\staticdata.c 3473 ijl_restore_package_image_from_file
> 742 0 @Base\loading.jl 1001 _include_from_serialized(pkg::Base.PkgId, path::String, o...
> 784 0 @Base\loading.jl 1298 _tryrequire_from_serialized(modkey::Base.PkgId, path::Str...
> 945 0 @Base\loading.jl 1401 _require_search_from_serialized(pkg::Base.PkgId, sourcepa...
> 1622 0 @Base\loading.jl 1690 _require(pkg::Base.PkgId, env::String)
> 1651 0 @Base\loading.jl 1555 macro expansion
> 1651 0 @Base\loading.jl 1567 _require_prelocked(uuidkey::Base.PkgId, env::String)
> 1652 0 C:/workdir/src\interpreter.c 533 eval_body
> 1652 0 C:/workdir/src\interpreter.c 572 eval_body
> 1652 0 C:/workdir/src\toplevel.c 731 jl_toplevel_eval_flex
> 1652 0 C:/workdir/src\toplevel.c 466 call_require
> 1652 0 C:/workdir/src\toplevel.c 503 eval_import_path
> 1652 0 ...al\julias\julia-1.9\lib\julia\sys.dll ? jfptr_require_41787.clone_1
> 1652 0 @Base\lock.jl 267 macro expansion
> 1652 0 @Base\loading.jl 1518 require(into::Module, mod::Symbol)
> 1653 1653 C:\WINDOWS\SYSTEM32\ntdll.dll ? RtlUserThreadStart
> 1653 0 C:\WINDOWS\System32\KERNEL32.DLL ? BaseThreadInitThunk
> 1653 0 C:/workdir/cli\loader_exe.c 59 mainCRTStartup
> 1653 0 C:/workdir/src\jlapi.c 717 jl_repl_entrypoint
> 1653 0 C:/workdir/src\julia.h 1874 jl_apply
> 1653 0 C:/workdir/src\jlapi.c 573 true_main
> 1653 0 ...al\julias\julia-1.9\lib\julia\sys.dll ? jfptr__start_50880.clone_1
> 1653 0 @Base\client.jl 522 _start()
> 1653 0 @Base\client.jl 322 exec_options(opts::Base.JLOptions)
> 1653 0 @Base\essentials.jl 816 #invokelatest#2
> 1653 0 @Base\essentials.jl 813 invokelatest
> 1653 0 @Base\client.jl 405 run_main_repl(interactive::Bool, quiet::Bool, banner::Boo...
> 1653 0 C:/workdir/src\builtins.c 774 jl_f__call_latest
> 1653 0 ...al\julias\julia-1.9\lib\julia\sys.dll ? jfptr_YY.1018_39738.clone_1
> 1653 0 @Base\client.jl 421 (::Base.var"#1018#1020"{Bool, Bool, Bool})(REPL::Module)
> 1653 0 ...al\julias\julia-1.9\lib\julia\sys.dll ? jfptr_run_repl_61990.clone_1
> 1653 0 ...re\julia\stdlib\v1.9\REPL\src\REPL.jl 362 run_repl(repl::REPL.AbstractREPL, consumer::Any)
> 1653 0 ...re\julia\stdlib\v1.9\REPL\src\REPL.jl 230 kwcall
> 1653 0 ...re\julia\stdlib\v1.9\REPL\src\REPL.jl 376 run_repl(repl::REPL.AbstractREPL, consumer::Any; backend_...
> 1653 0 ...re\julia\stdlib\v1.9\REPL\src\REPL.jl 233 start_repl_backend(backend::REPL.REPLBackend, consumer::A...
> 1653 0 ...re\julia\stdlib\v1.9\REPL\src\REPL.jl 248 repl_backend_loop(backend::REPL.REPLBackend, get_module::...
> 1653 0 @Base\boot.jl 370 eval
> 1653 0 ...re\julia\stdlib\v1.9\REPL\src\REPL.jl 152 eval_user_input(ast::Any, backend::REPL.REPLBackend, mod:...
> 1653 0 C:/workdir/src\toplevel.c 921 ijl_toplevel_eval
> 1653 0 C:/workdir/src\toplevel.c 971 ijl_toplevel_eval_in
> 1653 0 C:/workdir/src\toplevel.c 856 jl_toplevel_eval_flex
> 1653 0 C:/workdir/src\toplevel.c 912 jl_toplevel_eval_flex
> 1653 0 C:/workdir/src\interpreter.c 762 jl_interpret_toplevel_thunk
> Total snapshots: 1658 (100% utilization across all threads and tasks. Use the `groupby` kwarg to break down by thread and/or task)
> 
> ```

> **WSL**
>
> ```julia
> Count Overhead File Line Function
> ===== ======== ==== ==== ========
> 212 0 ...g/julia-release-1-dot-9/src/subtype.c 790 subtype_unionall
> 217 0 ...elease-1-dot-9/src/staticdata_utils.c 1194 jl_insert_backedges
> 227 0 ...ialang/julia-release-1-dot-9/src/gc.c 2910 gc_mark_loop
> 229 0 ...g/julia-release-1-dot-9/src/subtype.c 1275 subtype
> 245 0 ...g/julia-release-1-dot-9/src/typemap.c 619 jl_typemap_intersection_visitor
> 246 0 ...g/julia-release-1-dot-9/src/subtype.c 1897 ijl_subtype_env
> 273 0 /lib/x86_64-linux-gnu/libc.so.6 ? [unknown function]
> 273 0 ...xecutionEngine/Orc/ThreadSafeModule.h 136 withModuleDo<(anonymous namespace)::OptimizerT::operator(...
> 273 0 ...lia-release-1-dot-9/src/jitlayers.cpp 1098 operator()
> 273 0 ...usr/include/llvm/ADT/FunctionExtras.h 222 CallImpl<(anonymous namespace)::OptimizerT>
> 273 0 ...lia-release-1-dot-9/src/jitlayers.cpp 1133 operator()
> 277 0 ...g/julia-release-1-dot-9/src/subtype.c 1173 subtype_tuple
> 278 0 ...g/julia-release-1-dot-9/src/subtype.c 1315 subtype
> 298 0 ...g/julia-release-1-dot-9/src/jltypes.c 123 ijl_has_free_typevars
> 348 0 ...g/julia-release-1-dot-9/src/subtype.c 1909 ijl_subtype_env
> 350 0 ...g/julia-release-1-dot-9/src/subtype.c 1411 exists_subtype
> 353 0 ...g/julia-release-1-dot-9/src/subtype.c 2393 intersect_var
> 358 0 ...g/julia-release-1-dot-9/src/subtype.c 1447 forall_exists_subtype
> 393 0 ...g/julia-release-1-dot-9/src/subtype.c 2188 intersect_union
> 395 0 ...ialang/julia-release-1-dot-9/src/gc.c 3283 _jl_gc_collect
> 397 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE
> 398 0 ...g/julia-release-1-dot-9/src/subtype.c 3154 intersect
> 403 0 ...ialang/julia-release-1-dot-9/src/gc.c 959 maybe_collect
> 403 0 ...ialang/julia-release-1-dot-9/src/gc.c 3574 ijl_gc_collect
> 407 0 ...ialang/julia-release-1-dot-9/src/gf.c 1197 cache_method
> 411 0 ...ialang/julia-release-1-dot-9/src/gf.c 1403 get_intersect_matches
> 412 0 ...ialang/julia-release-1-dot-9/src/gf.c 1836 ijl_method_table_insert
> 412 0 ...ialang/julia-release-1-dot-9/src/gc.c 1324 jl_gc_pool_alloc_inner
> 421 0 ...ia-release-1-dot-9/src/simplevector.c 60 ijl_alloc_svec_uninit
> 424 0 ...ia-release-1-dot-9/src/simplevector.c 69 ijl_alloc_svec
> 436 0 ...g/julia-release-1-dot-9/src/subtype.c 3163 intersect
> 436 0 ...g/julia-release-1-dot-9/src/subtype.c 176 save_env
> 441 0 ...ialang/julia-release-1-dot-9/src/gf.c 3550 ml_matches
> 443 0 ...ialang/julia-release-1-dot-9/src/gc.c 1385 jl_gc_pool_alloc_noinline
> 444 0 ...g/julia-release-1-dot-9/src/subtype.c 3296 intersect_all
> 449 0 ...-release-1-dot-9/src/julia_internal.h 460 jl_gc_alloc_
> 452 0 ...g/julia-release-1-dot-9/src/subtype.c 2948 intersect_invariant
> 463 0 ...ialang/julia-release-1-dot-9/src/gc.c 3621 jl_gc_alloc
> 465 0 ...lia-release-1-dot-9/src/support/ios.c 624 ios_eof_blocking
> 466 0 ...g/julia-release-1-dot-9/src/subtype.c 3226 intersect
> 466 0 @Base/util.jl 490 _crc32c(io::IOStream, nb::Int64, crc::UInt32)
> 466 0 @Base/iostream.jl 231 _eof_nolock
> 466 0 @Base/iostream.jl 43 eof(s::IOStream)
> 469 0 ...lia-release-1-dot-9/src/support/ios.c 363 ios_readprep
> 474 0 ...g/julia-release-1-dot-9/src/typemap.c 586 jl_typemap_intersection_visitor
> 483 0 ...lia-release-1-dot-9/src/jitlayers.cpp 1187 operator()
> 483 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc14SimpleCompilerclERNS_6ModuleE
> 499 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc14IRCompileLayer4emitESt10unique_ptrINS0_29Ma...
> 515 0 ...g/julia-release-1-dot-9/src/subtype.c 3313 intersect_all
> 554 0 ...g/julia-release-1-dot-9/src/typemap.c 407 jl_typemap_intersection_array_visitor
> 567 0 ...g/julia-release-1-dot-9/src/subtype.c 2687 intersect_unionall_
> 578 0 ...g/julia-release-1-dot-9/src/subtype.c 3206 intersect
> 588 0 ...elease-1-dot-9/src/staticdata_utils.c 856 jl_insert_methods
> 589 0 ...ulia-release-1-dot-9/src/staticdata.c 3318 jl_restore_package_image_from_stream
> 607 0 ...g/julia-release-1-dot-9/src/subtype.c 2736 intersect_unionall
> 674 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE
> 714 0 ...g/julia-release-1-dot-9/src/subtype.c 2876 intersect_tuple
> 717 1 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE
> 727 0 ...g/julia-release-1-dot-9/src/subtype.c 3220 intersect
> 730 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE
> 731 0 ...ialang/julia-release-1-dot-9/src/gf.c 3176 ml_matches
> 754 0 ...g/julia-release-1-dot-9/src/typemap.c 624 jl_typemap_intersection_visitor
> 772 0 ...lia-release-1-dot-9/src/jitlayers.cpp 1783 jl_add_to_ee
> 772 0 ...lia-release-1-dot-9/src/jitlayers.cpp 235 _jl_compile_codeinst
> 772 0 ...lia-release-1-dot-9/src/jitlayers.cpp 1761 jl_add_to_ee
> 772 0 ...lia-release-1-dot-9/src/jitlayers.cpp 1385 addModule
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc16ExecutionSession6lookupENS_8ArrayRefIPNS0_8...
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc16ExecutionSession6lookupENS_8ArrayRefIPNS0_8...
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc16ExecutionSession6lookupERKSt6vectorISt4pair...
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc16ExecutionSession6lookupERKSt6vectorISt4pair...
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc16ExecutionSession6lookupENS0_10LookupKindERK...
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc16ExecutionSession19OL_applyQueryPhase1ESt10u...
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc25InProgressFullLookupState8completeESt10uniq...
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc16ExecutionSession17OL_completeLookupESt10uni...
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc16ExecutionSession22dispatchOutstandingMUsEv
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm6detail18UniqueFunctionBaseIvJSt10unique_ptrINS_3...
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc19MaterializationTask3runEv
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc31BasicIRLayerMaterializationUnit11materializ...
> 772 0 ...lia-release-1-dot-9/src/jitlayers.cpp 612 emit
> 772 0 ...-1.9/bin/../lib/julia/libLLVM-14jl.so ? _ZN4llvm3orc16IRTransformLayer4emitESt10unique_ptrINS0_29...
> 786 0 ...g/julia-release-1-dot-9/src/typemap.c 545 jl_typemap_intersection_visitor
> 803 0 ...lia-release-1-dot-9/src/jitlayers.cpp 440 jl_generate_fptr_impl
> 836 0 @ComponentArrays/src/ComponentArrays.jl 1 eval
> 836 0 @Requires/src/require.jl 101 (::ComponentArrays.var"#94#112")()
> 840 0 ...lia-release-1-dot-9/src/interpreter.c 624 eval_body
> 867 0 @Requires/src/require.jl 100 (::ComponentArrays.var"#93#111")()
> 879 0 ...g/julia-release-1-dot-9/src/subtype.c 3533 jl_type_intersection_env_s
> 901 0 @Requires/src/require.jl 99 (::ComponentArrays.var"#92#110")()
> 926 0 @Base/abstractarray.jl 3067 foreach(f::typeof(invokelatest), itr::Vector{Function})
> 929 0 ...lia-release-1-dot-9/src/interpreter.c 478 eval_body
> 948 0 @Base/loading.jl 1305 _tryrequire_from_serialized(modkey::Base.PkgId, path::Str...
> 948 0 @Base/loading.jl 1080 run_package_callbacks(modkey::Base.PkgId)
> 954 0 ...lia-release-1-dot-9/src/interpreter.c 610 eval_body
> 955 0 @Base/util.jl 491 _crc32c(io::IOStream, nb::Int64, crc::UInt32)
> 958 0 ...lia-release-1-dot-9/src/interpreter.c 177 eval_stmt_value
> 960 0 @Base/iostream.jl 468 readbytes_all!
> 962 0 ...lia-release-1-dot-9/src/interpreter.c 698 jl_fptr_interpret_call
> 962 0 @Base/iostream.jl 516 #readbytes!#710
> 962 0 @Base/iostream.jl 512 readbytes!
> 966 0 ...lia-release-1-dot-9/src/interpreter.c 226 eval_value
> 966 0 ...lia-release-1-dot-9/src/interpreter.c 126 do_call
> 970 0 ...ialang/julia-release-1-dot-9/src/gf.c 2278 jl_compile_method_internal
> 971 0 ...ialang/julia-release-1-dot-9/src/gf.c 2673 _jl_invoke
> 971 0 ...ialang/julia-release-1-dot-9/src/gf.c 2196 jl_compile_method_internal
> 976 0 ...lia-release-1-dot-9/src/support/ios.c 312 _ios_read
> 991 0 ...g/julia-release-1-dot-9/src/typemap.c 457 jl_typemap_intersection_node_visitor
> 1069 109 [any unknown stackframes]
> 1299 0 ...ialang/julia-release-1-dot-9/src/gf.c 2112 ijl_matching_methods
> 1304 0 ...elease-1-dot-9/src/staticdata_utils.c 923 jl_verify_edges
> 1317 0 ...elease-1-dot-9/src/staticdata_utils.c 1137 jl_insert_backedges
> 1411 0 @Base/util.jl 498 _crc32c
> 1414 0 @Base/loading.jl 2756 stale_cachefile(modkey::Base.PkgId, build_id::UInt128, mo...
> 1414 0 @Base/loading.jl 2220 isvalid_pkgimage_crc(f::IOStream, ocachefile::String)
> 1416 0 @Base/io.jl 395 #open#409
> 1420 0 @Base/io.jl 392 open
> 1446 0 ...lia-release-1-dot-9/src/support/ios.c 106 _os_read
> 1446 0 /lib/x86_64-linux-gnu/libpthread.so.0 ? read
> 1526 0 @Base/loading.jl 1372 _require_search_from_serialized(pkg::Base.PkgId, sourcepa...
> 1561 0 ...ulia-release-1-dot-9/src/staticdata.c 3323 jl_restore_package_image_from_stream
> 1592 0 @Base/loading.jl 2612 stale_cachefile
> 2397 0 ...ulia-release-1-dot-9/src/staticdata.c 3473 ijl_restore_package_image_from_file
> 2397 0 ...ulia-release-1-dot-9/src/staticdata.c 3360 jl_restore_incremental_from_buf
> 2407 0 @Base/loading.jl 1001 _include_from_serialized(pkg::Base.PkgId, path::String, o...
> 2418 0 @Base/loading.jl 1298 _tryrequire_from_serialized(modkey::Base.PkgId, path::Str...
> 3372 0 @Base/loading.jl 1401 _require_search_from_serialized(pkg::Base.PkgId, sourcepa...
> 5031 0 @Base/loading.jl 1690 _require(pkg::Base.PkgId, env::String)
> 5038 0 ...lia-release-1-dot-9/src/interpreter.c 533 eval_body
> 5038 0 ...lia-release-1-dot-9/src/interpreter.c 572 eval_body
> 5038 0 .../julia-release-1-dot-9/src/toplevel.c 731 jl_toplevel_eval_flex
> 5038 0 .../julia-release-1-dot-9/src/toplevel.c 466 call_require
> 5038 0 .../julia-release-1-dot-9/src/toplevel.c 503 eval_import_path
> 5038 0 /opt/julias/julia-1.9/lib/julia/sys.so ? jfptr_require_49034.clone_1
> 5038 0 @Base/loading.jl 1555 macro expansion
> 5038 0 @Base/lock.jl 267 macro expansion
> 5038 0 @Base/loading.jl 1518 require(into::Module, mod::Symbol)
> 5038 0 @Base/loading.jl 1567 _require_prelocked(uuidkey::Base.PkgId, env::String)
> 5042 5042 julia ? [unknown function]
> 5042 0 /lib/x86_64-linux-gnu/libc.so.6 ? __libc_start_main
> 5042 0 julia ? main
> 5042 0 ...ang/julia-release-1-dot-9/src/jlapi.c 717 jl_repl_entrypoint
> 5042 0 ...ang/julia-release-1-dot-9/src/julia.h 1874 jl_apply
> 5042 0 ...ang/julia-release-1-dot-9/src/jlapi.c 573 true_main
> 5042 0 ...ialang/julia-release-1-dot-9/src/gf.c 2681 _jl_invoke
> 5042 0 ...ialang/julia-release-1-dot-9/src/gf.c 2863 ijl_apply_generic
> 5042 0 /opt/julias/julia-1.9/lib/julia/sys.so ? jfptr__start_47686.clone_1
> 5042 0 @Base/client.jl 522 _start()
> 5042 0 @Base/client.jl 322 exec_options(opts::Base.JLOptions)
> 5042 0 @Base/essentials.jl 816 #invokelatest#2
> 5042 0 @Base/essentials.jl 813 invokelatest
> 5042 0 @Base/client.jl 405 run_main_repl(interactive::Bool, quiet::Bool, banner::Boo...
> 5042 0 .../julia-release-1-dot-9/src/builtins.c 774 jl_f__call_latest
> 5042 0 /opt/julias/julia-1.9/lib/julia/sys.so ? jfptr_YY.1018_34760.clone_1
> 5042 0 @Base/client.jl 421 (::Base.var"#1018#1020"{Bool, Bool, Bool})(REPL::Module)
> 5042 0 /opt/julias/julia-1.9/lib/julia/sys.so ? jfptr_run_repl_59582.clone_1
> 5042 0 ...re/julia/stdlib/v1.9/REPL/src/REPL.jl 362 run_repl(repl::REPL.AbstractREPL, consumer::Any)
> 5042 0 ...re/julia/stdlib/v1.9/REPL/src/REPL.jl 230 kwcall
> 5042 0 ...re/julia/stdlib/v1.9/REPL/src/REPL.jl 376 run_repl(repl::REPL.AbstractREPL, consumer::Any; backend_...
> 5042 0 ...re/julia/stdlib/v1.9/REPL/src/REPL.jl 233 start_repl_backend(backend::REPL.REPLBackend, consumer::A...
> 5042 0 ...re/julia/stdlib/v1.9/REPL/src/REPL.jl 248 repl_backend_loop(backend::REPL.REPLBackend, get_module::...
> 5042 0 @Base/boot.jl 370 eval
> 5042 0 ...re/julia/stdlib/v1.9/REPL/src/REPL.jl 152 eval_user_input(ast::Any, backend::REPL.REPLBackend, mod:...
> 5042 0 .../julia-release-1-dot-9/src/toplevel.c 971 ijl_toplevel_eval_in
> 5042 0 .../julia-release-1-dot-9/src/toplevel.c 856 jl_toplevel_eval_flex
> 5042 0 .../julia-release-1-dot-9/src/toplevel.c 912 jl_toplevel_eval_flex
> 5042 0 ...lia-release-1-dot-9/src/interpreter.c 762 jl_interpret_toplevel_thunk
> Total snapshots: 5258 (100% utilization across all threads and tasks. Use the `groupby` kwarg to break down by thread and/or task)
> 
> ```

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [January 23, 2023, 5:21pm UTC](https://discourse.julialang.org/t/package-load-speed-windows-vs-linux/93039/24 "2023-01-23T17:21:05Z")

</div>

I tested the first and second time to plot on a number of different machines using Julia 1.9-beta3.

Test:

```julia
@time @eval using Plots; display(scatter(rand(1_000)))

```

First timing is after a fresh start of the machine. On Windows I also launched the task manager and waited until the cpu load was below 10% before running the test.

The second timing is from running the same command after restarting Julia, but not the computer.

The first time-to-plot on Windows was nevertheless varying a lot.

![Screenshot from 2023-01-23 18-19-28](https://global.discourse-cdn.com/julialang/original/3X/8/a/8a12c325bcd4c720ccd393ab1cc769c6fe6d2726.png)

On the same hardware the first time-to-plot on Linux is about 1.7 times shorter than with Windows (2.78s vs 4.73s), the second time-to-plot 1.76 times faster (2.03s vs 3.58s).

The second time-to-plot as defined here is relevant for people who are not using Revise, but restart Julia after changing their code.

Using a 4 years old mid- or high end CPU should be fast enough if you are using Linux. First-time-to plot on low and mid-end CPUs on Windows is still something that could be improved.

---

<div class="post-metadata">

**Author:** ![phyxmeow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/phyxmeow/32/36373_2.png) [@phyxmeow](https://discourse.julialang.org/u/phyxmeow)\
**Post date:** [March 28, 2023, 12:21pm UTC](https://discourse.julialang.org/t/package-load-speed-windows-vs-linux/93039/25 "2023-03-28T12:21:21Z")

</div>

Pluto will smartly open your windows browser for using, and it works perfectly at least for me.

[Previous page](https://discourse.julialang.org/t/package-load-speed-windows-vs-linux/93039.md?page=1)
