我想尝试使用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