Memory 在什么情况下Julia会将内存分配给单个数字?

Memory 在什么情况下Julia会将内存分配给单个数字?,memory,julia,Memory,Julia,假设我写这个函数 function test_function(T) c = 1 d = 31 q = 321 b = 32121 a = 10 for i in 1:T c = d + q + b + a end end 不会有内存分配。然而,在我自己的代码中,我编写了一个类似的循环,但是我遇到了大量的内存分配。我无法共享全部代码,但当我使用

假设我写这个函数

    function test_function(T)
        c = 1
        d = 31
        q = 321
        b = 32121
        a = 10
        for i in 1:T
            c = d + q + b + a
        end
    end
不会有内存分配。然而,在我自己的代码中,我编写了一个类似的循环,但是我遇到了大量的内存分配。我无法共享全部代码,但当我使用
--track allocation=user
时,我看到了以下结果

    80000     q      = 3
        -     p      = 0.1
        -     p_2    = 3
        -     q_2    = .2
        -
   240000     r      =  p - p_2 + q_2 - q;

上面的代码在for循环中。这对我来说很奇怪-为什么Julia会将内存分配给单个数字?

这里的关键是类型稳定性。您的代码正在
Int
Float64
@OscarSmith之间进行转换我如何解决此问题?你有没有举个例子?谢谢@这很有帮助!这很奇怪。这种类型的促销应该是零成本的。他们绝对不应该触发分配!怎么回事?这不是一个完整的计划。必须有其他分配给
q
r
的任务,我们在这里没有看到。