更改Julia DEPOT_PATH时,程序包加载时间急剧增加



我是Julia的新手,根据建议,由于Julia 1.5.2中包的加载时间很长,我开始使用夜间构建1.6.0-DEV.1371

因此,我尝试更改DEPOT_PATH的默认目录,并将所有文件从~/.julia复制到/opt/julia(由我的用户所有(。现在,如果我使用默认目录启动Julia并运行下面的代码,大约需要4秒。然而,当我在新目录(JULIA_DEPOT_PATH=/opt/julia julia(中启动julia时,同样的代码花费了令人难以置信的83秒。Julia 1.5.2也是如此(默认目录中为17s,新目录中为200s(。

这是我用来测量时间的代码。

t = time(); using Plots; time() - t

对于这种奇怪(令人讨厌(的行为,有什么解释吗?


我的平台信息:

Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Core(TM) i3-6100U CPU @ 2.30GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-9.0.1 (ORCJIT, skylake)

我用的是固态硬盘。

现在您很有可能拥有以前Julia安装的带有新Julia的JULIA_DEPOT_PATH的文件。通常的方法是将JULIA_DEPOT_PATH设置为一个空文件夹,然后在那里安装它们。

关于启动时间,您可以做以下事情:

  1. 预编译包(当您第一次使用包的新版本时也会发生这种情况(
using Pkg
pkg"precompile"

一旦Plots被预编译,每次加载仍然需要大约10秒。

  1. 如果上述时间不可接受,请将Plots构建到Julia系统映像中
using PackageCompiler
create_sysimage(:Plots, sysimage_path="sys_plots.so", precompile_execution_file="precompile_plots.jl")

对于precompile_plots.jl,您可以使用定期使用的命令,也可以使用Plots.j.中的测试集

完成后,您将以以下命令启动Julia:

julia --sysimage sys_plots.so

构建系统映像需要很长时间,但是一旦完成,加载Plots.jl将需要几毫秒的时间。

更多信息可以在这里找到:

  • 包编译器教程https://julialang.github.io/PackageCompiler.jl/dev/examples/plots/
  • 优秀的教程视频https://live.juliacon.org/talk/Z8TE39

最新更新