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.
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.
Pluto will smartly open your windows browser for using, and it works perfectly at least for me.