加快导入作为开发安装的包

Speeding up import of package installed as develop

我安装了一个包 Foo 作为开发 (] develop /path/to/Foo),我在我的 Julia 脚本和 Pluto 笔记本中使用它。

每个实验开始于

using Revise # if a Pluto notebook or REPL
using Foo

由于 Foo 是一个合理的大小,因此预编译大约需要 2 分钟,即使它在实验之间并不总是发生变化,并且当它进行通常的微小变化时也是如此。有没有一种方法可以存储预编译版本,加载它,然后使用 Revise.jl 检查任何更改以使加载时间更类似于(未编译的)python setup.py develop?或者是否有其他方法可以减少我所有脚本开始时的两分钟瓶颈。

感谢您在评论中澄清。我的理解是你所要求的是不可能的,因为编译后的代码不会在 Julia 会话之间缓存。这是核心开发人员关注的一个长期存在的问题,但在撰写本文时尚未解决。

Here 是去年 Julia 的一个视频,其中 Jeff 在编译器团队的 to-do 事物列表中包含了代码缓存。

更直接地解决您的问题,here's 跟踪此问题的相关问题之一,在讨论中您还将看到 Revise 的作者 Tim Holy,或多或少地直接回答了您的问题。

与此相关,并没有真正回答您的问题,从有效的工作流角度来看,尝试尽量减少必须重新启动 Julia 会话的次数确实很关键。这是 Revise 的关键用例之一,因为它允许您在不重新启动的情况下更改内容 on-the-fly。主要限制是 struct 定义,但这通常可以通过使用 NamedTuples 或使用“rename-and-replace”策略来解决,即从 MyStruct1 开始,当你想改变它做一个 find-replace MyStruct1 => MyStruct2.