我正在探索将Julia作为一种通用的科学计算语言(而不是Python),但它的启动时间相当缓慢。
有没有什么方法可以加速它的启动?
$ time python -c 'print "Hello"'
Hello
real 0m0.030s
user 0m0.018s
sys 0m0.010s
$ time julia -e 'println("Hello")'
Hello
real 0m4.614s
user 0m4.644s
sys 0m0.116s
附录: 这里是去年Julia语言作者之一的一句话。这种策略是否存在问题?
Julia大部分代码是用自身编写的,然后进行解析、类型推导和JIT编译。因此,从头开始构建整个系统需要15-20秒钟的时间。为了使它更快,我们采取分阶段的系统,在解析、类型推导之后,将已推导的抽象语法树序列化并缓存到sys.ji文件中。当您运行julia时,会加载该文件并使用它来运行系统。然而,sys.ji文件中没有缓存任何LLVM代码或机器代码,因此所有LLVM JIT编译仍然需要每次启动Julia时执行,因此需要约2秒钟。
这2秒钟的启动延迟非常烦人,我们有一个修复计划。基本计划是能够将整个Julia程序编译为二进制文件:可以运行的可执行文件或.so/.dylib共享库,可以像调用共享C库那样被其他程序调用。二进制文件的启动时间就像任何其他C程序一样,因此2秒钟的启动延迟将消失。