为什么这个Python程序运行速度比相同的Julia程序快3倍

时间:2016-02-08 15:49:03

标签: python python-2.7 julia collatz

我想尝试使用Julia编程语言,因为我听说它应该比Python更快。我决定尝试Project Euler #14的动态程序,因为它处理了大量的计算(找到最长的Collat​​z序列)。

我在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

0 个答案:

没有答案