15

我使用 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)

这似乎非常慢,有没有什么好方法可以加快使用模块,比如我可以做一次的预编译步骤?

4

1 回答 1

13

既然你还没有得到任何答案,让我给你一般的第一顺序答案——尽管我希望更有资格的人能更详细地回答你的问题(如果我错了,请纠正我)。

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

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

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

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

希望有帮助。

于 2018-04-05T06:38:27.920 回答