在Julia中加速包的加载

17
我使用GLPKMathProgInterface和JuMP在Julia中编写了一个程序来解决线性规划问题。该Julia代码由Python程序调用,通过多个命令行调用运行多个Juila代码实例。尽管我对实际求解器的性能非常满意,但初始化非常慢。我想知道是否有方法可以加快速度。
例如,如果我只保存以下内容到文件中:
@time using DataFrames, CSV, GLPKMathProgInterface, JuMP, ArgParse

并运行它

mylabtop:~ me$ julia test.jl 
12.270137 seconds (6.54 M allocations: 364.537 MiB, 3.05% gc time)

这个好像很慢,有没有什么好的方法可以通过像预编译这样的模块来加速,我只需要做一次?


1
请问为什么您要使用多个命令行调用Julia?是否有特定的需要使用“命令行调用”?因为我会选择在单个Julia子进程中调用“我的求解器”,而不是使用多个命令行调用。 - hckr
1个回答

14

因为您还没有得到任何答案,所以我给您提供一般的第一级答案-尽管我希望更有资格的人会详细回答您的问题(如果我错了,请纠正我)。

1) 在Julia中加载软件包有时相当缓慢,直至本文撰写时。这已经被讨论过很多次,您可以期待未来的改进。据我所知,在1.0发布后的早期1.x版本中会发生这种情况。请查看线程。

2) 由于您通常只需要在每个Julia会话中支付一次加载时间成本,因此一种方法是尽可能长时间地保持会话运行状态。您可以使用include("test.jl")从会话内执行脚本。另外,我还要提到令人惊叹的Revise.jl - 几乎不可能过分强调这个软件包!

3) (我没有使用此更困难的方法的经验。)有PackageCompiler.jl,它允许您将软件包编译到您的系统映像中。请阅读Simon的博客文章

4)(不推荐使用)还有高度实验性的static-julia,它会将您的脚本静态编译成共享库和可执行文件。

希望能帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接