我正在運行這個問題中顯示的代碼。我希望它第二次和第三次運行得更快(第一次運行需要時間來編譯代碼)。但是,它似乎花費了與第一次相同的時間。我怎樣才能讓這段代碼運行得更快?
編輯:我通過在 Linux 終端上發出命令來運行代碼:julia mycode.jl
我嘗試按照@Przemyslaw Szufel 的回答中的說明進行操作,但出現以下錯誤:
julia> create_sysimage(["Plots"], sysimage_path="sys_plots.so", precompile_execution_file="precompile_plots.jl")
ERROR: MethodError: no method matching create_sysimage(::Array{String,1}; sysimage_path="sys_plots.so", precompile_execution_file="precompile_plots.jl")
Closest candidates are:
create_sysimage() at /home/cardio/.julia/packages/PackageCompiler/2yhCw/src/PackageCompiler.jl:462 got unsupported keyword arguments "sysimage_path", "precompile_execution_file"
create_sysimage(::Union{Array{Symbol,1}, Symbol}; sysimage_path, project, precompile_execution_file, precompile_statements_file, incremental, filter_stdlibs, replace_default, base_sysimage, isapp, julia_init_c_file, version, compat_level, soname, cpu_target, script) at /home/cardio/.julia/packages/PackageCompiler/2yhCw/src/PackageCompiler.jl:462
Stacktrace:
[1] top-level scope at REPL[25]:1
我在 Debian 穩定版 Linux 上使用 Julia:Debian ? julia/1.5.3 dfsg-3
uj5u.com熱心網友回復:
在 Julia 中,包每次在單個 Julia 會話中運行時都會被編譯。因此,啟動一個新的 Julia 行程意味著每次都Plots.jl
被編譯。這是一個相當大的包,因此需要大量時間來編譯。
為了規避它,使用PackageCompiler
并將Plots.jl 編譯成靜態系統映像,供 Julia 以后使用
基本步驟包括:
using PackageCompiler
create_sysimage(["Plots"], sysimage_path="sys_plots.so", precompile_execution_file="precompile_plots.jl")
完成此操作后,您需要將代碼運行為:
julia --sysimage sys_plots.so mycode.jl
同樣,您可以將MultivariateStats
和添加RDatasets
到生成的系統映像中,但我認為它們不會導致任何重大延遲。
請注意,如果后續運行是您的開發程序(而不是您的生產系統實施)的一部分,那么您就是。開發 Julia 模塊,而不是考慮Revise.jl
在開發程序中使用而不是預編譯 sysimage。基本上,擁有 sysimage 意味著您每次更新 Julia 包時都需要重建它,所以我會考慮這種方法而不是用于生產而不是開發(取決于您的確切場景)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/504476.html
上一篇:我無法解決jsdiv隱藏問題