我正在探索使用 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 秒。为了让它更快,我们有一个分阶段的系统,我们在其中解析、类型推断,然后将类型推断的 AST 的序列化版本缓存在文件 sys.ji 中。当你运行 julia 时,这个文件会被加载并用于运行系统。但是,sys.ji 中没有缓存 LLVM 代码或机器代码,因此每次 julia 启动时仍然需要完成所有 LLVM jitting,因此大约需要 2 秒。
这 2 秒的启动延迟非常烦人,我们有一个修复它的计划。基本计划是能够将整个 Julia 程序编译为二进制文件:可以运行的可执行文件或可以从其他程序调用的 .so/.dylib 共享库,就好像它们只是共享 C 库一样。二进制文件的启动时间将与任何其他 C 程序一样,因此 2 秒的启动延迟将消失。