6

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

0 回答 0