我使用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)
这看起来非常慢,是否有一些很好的方法来加速使用模块,比如我可以做一次的预编译步骤?
答案 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,它将您的脚本静态编译为共享库和可执行文件。
希望有所帮助。