Julia运行前,会对代码进行编译,所谓的慢,就是他的编译需要时间。
运行Julia有点像调试C#程序,点了F5后,需要给他一段时间进行编译。
julia的jit意思就是,每次运行的时候,先对代码进行编译,然后缓存。与C#不同之处在于,我们用C#写的程序,一旦开发完成,就发布出来,生成exe,以后直接调运行,不执行编译。
但是Julia不一样,它不是生成exe永久保存,每次运行,他都从jl文件代码开始搞,语法检查,词法分析,编译,运行。所以你会觉得,为什么python一运行里面就有反应,二Julia却好久没反应。
解决办法:
一、预编译指令,precompile,具体效果我也没搞清楚,刚刚找到这个资料,请参考# Precompile a script?
二、在执行正式任务前,先执行一个小任务,目的就是把编译过程完成,把缓存编译结果。
目前我有一个计算模块【对600只股票进行同样的计算】:用python需要400秒
用julia第一次执行,需要15秒
第二次执行,只需要2.5秒
改进方法,在正式计算600只股票的数据之前,我先计算一只股票的数据,然后再计算600只股票的数据。
三、其他方法:是否能提前编译成dll之类。。。。。。
题外话:
网上看到一个网友说,他在回测中要进行交易撮合模拟,以前用python极难加速,因为业务复杂,不能很好的使用矢量计算、cpyton,numba等技术,都是一大串循环,他改成julia后,速度比较可观。
这个我也比较能理解,我也碰到过必须要用循环的情形,那简直痛哭流涕。。。。。。
网友评论