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
的任务,我们在这里没有看到。