作者:少爷自控_592 | 来源:互联网 | 2023-02-01 23:01
我用Julia创建了简单的绘图示例
using Gadfly
draw(SVG("example.svg", 10cm, 10cm),
plot(x=rand(10), y=rand(10))
)
并运行它作为time julia example.jl
它把它27
秒完成.这是正常的行为吗?有可能加快速度吗?
最新朱莉娅0.5.2和Pkg.
1> niczky12..:
我不是专家,所以拿一点盐,但你draw
和它们的SVG
功能在第一次运行时编译,这就是为什么运行时间长.如果再次调用该功能,则需要的时间要少得多.你首先要编译函数调用,否则所有后来的执行都很快.
我修改了你的脚本来测量在不同调用中花费的时间:
@time using Gadfly
@time draw(SVG("example.svg", 10cm, 10cm),
plot(x=rand(10), y=rand(10))
)
@time draw(SVG("example2.svg", 10cm, 10cm),
plot(x=rand(10), y=rand(10))
)
从控制台运行它julia example.jl
给我以下内容:
$ julia example.jl
2.728577 seconds (3.32 M allocations: 141.186 MB, 10.29% gc time)
20.434172 seconds (27.48 M allocations: 1.109 GB, 1.95% gc time)
0.023084 seconds (32.59 k allocations: 1.444 MB)
"是的,但我也是第一次关心.如果你必须在脚本的每次更改后等待20-30秒,这使得快速开发变得非常困难"我不知道你从哪里得到它.每次打开Julia时都需要重新编译Gadfly,而不是每次更改脚本时都需要重新编译.有很大的不同.但如果第一次到情节很重要,不要使用Gadfly.这是错误的工作库.请改用PyPlot或GR.这与Julia无关,而是一个库问题.
这意味着它迎合了不同的编程习惯.只要你保持会话开放,你就不会感觉到.
这个漫长的启动时间主要与未预编译的软件包有关.当软件包被预编译时,第一次到X会急剧下降.一些较旧的软件包尚未更新为使用预编译,我相信这会导致Gadfly的加载时间变慢.使用预编译时,第一次使用"使用X"将会很慢,但随后将被缓存并且在所有会话中都会很快,因此您不必保持会话打开.