我在解决Code Jam问题时尝试使用Julia语言,这里是来自2010年1C轮的Rope Intranet问题(https://code.google.com/codejam/contest/619102/dashboard)
解决方案基本上如下:
for tc = 1:int(readline())
n = int(readline())
a = [map(int, split(readline())) for _ = 1:n]
ans = 0
for (i, x) in enumerate(a)
for y in a[i + 1:end]
ans += (x[1] - y[1]) * (x[2] - y[2]) < 0
end
end
println("Case #", tc, ": ", ans)
end
然而,与C++和Python的解决方案相比,大输入的时间结果并不令人印象深刻:
julia
real 0m6.196s
user 0m6.028s
sys 0m0.373s
c++
real 0m0.392s
user 0m0.338s
sys 0m0.053s
pypy
real 0m0.529s
user 0m0.507s
sys 0m0.016s
当我用随机数替换文件输入时,情况发生了变化(尽管仍然比C ++慢):
julia
real 0m3.065s
user 0m2.868s
sys 0m0.338s
c++
real 0m1.413s
user 0m1.348s
sys 0m0.055s
pypy
real 0m22.491s
user 0m22.257s
sys 0m0.160s
有没有办法在Julia中优化文件读取时间(我使用的是v0.3.7版本)?
real 0m1.116s
。但是在我的机器上,我没有看到将代码放入函数中带来的任何收益。 - frosttime cat A-large-practice.in | julia A.jl
比time julia A.jl <A-large-practice.in
慢了约0.15毫秒。而且后者打起来更快。 - frost