加快Julia的包装负荷

时间:2018-04-03 16:45:08

标签: julia julia-jump

我使用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 个答案:

答案 0 :(得分:6)

由于你还没有得到任何答案,让我给你一般的第一顺序答案 - 虽然我希望有更多合格的人会更详细地回答你的问题(并纠正我,如果我错了)。

1)在撰写本文时,在Julia中加载包有时会相当慢。它已被多次讨论过,您可以期待未来的改进。 AFAIK将在1.0版本发布后的早期1.x版本中发生。看一下this主题。

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

3)(我对这种更难的方法没有经验。)PackageCompiler.jl允许您将包编译到系统映像中。西蒙阅读此blog post

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

希望有所帮助。