我很关心性能。因此,我将其创建为关于首次调用或导入包时的延迟问题。这可能是一个愚蠢的问题。
当我第一次为 ex 添加包时,Plots 会消耗一些时间来构建包。再次,当我第一次在我的笔记本上导入包时,也花了一些时间(~1 分钟)说Precompiling message
导入包后,当我点击plot()这也会消耗一些时间(30 秒 - 60 秒)并最终返回一个情节。
一旦我使用了绘图功能,下次使用时就不会花费太多时间来产生结果。
每当我重新启动笔记本时,就会发生这种延迟。
我猜它是在执行之前编译函数。因为与 python 不同,julia 不是脚本语言。所以,它应该经过编译。但是,为什么每次重启笔记本时都会出现延迟?
无论如何我可以抑制这种延迟吗?无论如何,我可以预编译一次所有内容,以便下次在病房中我看不到任何延迟,而不必担心笔记本或 Julia 终端中的内核重启。为什么会发生延迟?完全是因为编译时间还是取决于我的机器?
您可以做两件事来减少延迟:
Plots.jl正在利用这一点将首次绘图时间减少一半以上。这确实是一个唾手可得的果实 - 更新 Julia。以下是我的笔记本电脑上的测量值:julia> @time using Plots
16.816181 seconds (14.46 M allocations: 854.353 MiB, 2.31% gc time)
julia> @time Plots.plot(sin.(1:0.25:7))
4.292128 seconds (4.70 M allocations: 243.866 MiB, 2.01% gc time)
# this waits another 7s before the plot actually appears on screen
Run Code Online (Sandbox Code Playgroud)
那些时间不是很好,但可以接受。
Plots到您的系统映像中(有关详细信息,请参见https://julialang.github.io/PackageCompiler.jl/dev/examples/plots/)using PackageCompiler
create_sysimage(:Plots, sysimage_path="sys_plots.so", precompile_execution_file="precompile_plots.jl")
Run Code Online (Sandbox Code Playgroud)
这将您的首次绘图时间减少到半秒以下。还有一个缺点是 Julia 解释器 (REPL) 需要 400 毫秒以上的时间才能启动,并且您需要在启动 Julia 时使用该标志--sysimage sys_plots.so(或--sysimage sys_plots.dll在 Windows 上)。预编译包有时也会带来其他警告(例如,每次包更新都需要重新编译等)。
| 归档时间: |
|
| 查看次数: |
874 次 |
| 最近记录: |