我的程序需要内存,所以我需要尽可能多地保存内存。 将整数值赋给变量时,值的类型始终为Int64,无论是0还是+ 2^63-1或-2^63。 我无法找到一个巧妙的方法来有效地分配内存,所以我写了,看起来像这样(在本例中为整数)的函数:朱莉娅:高效的内存分配
function right_int(n)
types = [Int8,Int16,Int32, Int64, Int128]
for t in reverse(types)
try
n = t(n)
catch InexactError
break
end
end
n
end
a = right_int(parse(Int,eval(readline(STDIN))))
但我不认为这是一个好办法做到这一点。
我也有一个相关的问题:什么是有效的数字操作方式,而不用担心typemins和typemaxs?将每个操作数转换为BigInt,然后应用right_int?
所以,如果我不知道,如果用户将输入整数或bigints我应该保存一切都如同BigInt? – Pigna
取决于你的用例。他们是否真的需要超过20亿的数字?我的观点是,如果你的Julia程序受内存限制,你应该在检查你的热循环中的类型稳定性之前,试着用'right_int'之类的方法来保存少量的字节。 –
他们不太可能会输入大于20亿的数字,但仍然可能发生的事情是我以后需要做的操作将超出限制。但无论如何,我明白了,谢谢@MattB。 – Pigna