我想尝试 Julia 编程语言,因为我听说它应该比 Python 快。我决定为Project Euler #14尝试一个动态程序,因为它处理了大量计算(找到最长的 Collatz 序列)。
我在 Julia 中为它编写了一个程序,然后决定尝试用 Python 编写一个类似的程序,看看它们各自的速度有多快。然而,在我的机器上,Python 程序运行大约需要 2 秒,而 Julia 大约需要 7 秒。这让我很惊讶,因为正如我之前所说的 Julia 声称比 Python 快,所以我想知道是否有任何内在的东西使 Julia 变慢的脚本。我试图让它们都以相同的方式计算。
这是脚本,我将不胜感激!
朱莉娅:
global max_val = 0
global max_item = 0
global d = Dict{Integer,Integer}()
function coll_length(n)
#println(n)
global max_val
global max_item
global d
if haskey(d,n)
return d[n]
end
if n==1
answer = 1
elseif n%2==1
answer = 1+coll_length(3n+1)
else
answer = 1+coll_length(n/2)
end
d[n]=answer
if max_val<answer
max_val=answer
max_item=n
end
return answer
end
for i = 1:1000000
coll_length(i)
end
println(max_item)
Python:
d = {}
max_val = 0
max_item = 0
def coll_length(n):
global d
global max_val
global max_item
if n in d:
return d[n]
if n==1:
answer= 1
elif n%2==0:
answer= 1+coll_length(n/2)
else:
answer= 1+coll_length(3*n+1)
d[n]=answer
if max_val<answer:
max_val=answer
max_item=n
return answer
for n in range(1,1000000+1):
coll_length(n)
print max_item