我安装了一个包Foo
作为develop(] 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会话之间缓存。这是核心开发人员关注的一个长期问题,但在撰写本文时尚未公开。
这是去年Julia的一段视频,Jeff将代码缓存包含在编译器团队的待办事项列表中。
更直接地回答你的问题,这是跟踪这一问题的一个相关问题,在讨论中,你还会看到Revision的作者Tim Holy或多或少地直接回答了你的问题。
从高效的工作流程角度来看,尽量减少重新启动Julia会话的次数是非常关键的,而不是真正回答你的问题。这是Revision的关键用例之一,因为它允许您在不重新启动的情况下动态更改内容。主要的限制是struct
的定义,但这通常可以通过使用NamedTuples
或使用";重命名并替换";策略,即从MyStruct1
开始,当您想更改它时,执行查找-替换MyStruct1 => MyStruct2
。