Package load speed: Windows vs Linux

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

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

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:

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

WSL2:

  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.

Now, actual profiling, and back on 1.9.0-beta3

(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
 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
 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)

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

Test:

@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

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.

1 Like