[英]Julia seems to be very slow
我正在運行這個問題中顯示的代碼。 我希望它第二次和第三次運行得更快(第一次運行需要時間來編譯代碼)。 但是,它似乎花費了與第一次相同的時間。 我怎樣才能讓這段代碼運行得更快?
編輯:我通過在 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
I am using Julia on Debian Stable Linux: Debian ⛬ julia/1.5.3+dfsg-3
在 Julia 中,每次使用單個 Julia session 運行時都會編譯包。 因此,啟動一個新的 Julia 進程意味着每次Plots.jl
都會被編譯。 這是一個相當大的 package,所以編譯需要很長時間。
為了規避它,使用PackageCompiler
並將 Plots.jl 編譯成 static 系統映像,供 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 軟件包時都需要重建它,所以我會考慮這種方法而不是生產而不是開發(取決於您的具體情況)。
我遇到了問題,幾乎回到了 Python 但現在我在 REPL 中使用 include 運行腳本。 這種方式要快得多。
注意:第一次運行會很慢,但是即使編輯了腳本,在同一個 REPL session 中的后續運行也會很快。
Fedora 36、Julia 1.8.1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.