Julia 查找内存中单个对象的大小
我知道Julia 查找内存中单个对象的大小,julia,Julia,我知道varinfo()函数将给出内存中所有对象的大小。这可能会非常慢地执行,有时会在某些对象上失败,使整个函数挂起。是否有一种方法可以获得特定对象在内存中的大小,类似于Python中的sys.getsizeof()函数?varinfo()接受匹配对象名称,因此可以使用 x = rand(100, 100) varinfo(r"x") 获取有关x的信息。对于以字节为单位的大小,请使用 Base.summarysize(x) 编辑: 最初,该答案建议使用whos(),但由于@Plankalkü
varinfo()
函数将给出内存中所有对象的大小。这可能会非常慢地执行,有时会在某些对象上失败,使整个函数挂起。是否有一种方法可以获得特定对象在内存中的大小,类似于Python中的sys.getsizeof()
函数?varinfo()
接受匹配对象名称,因此可以使用
x = rand(100, 100)
varinfo(r"x")
获取有关x
的信息。对于以字节为单位的大小,请使用
Base.summarysize(x)
编辑:
最初,该答案建议使用
whos()
,但由于@Plankalkül提到whos()
已重命名为varinfo()
,因此相应地更新了答案 您可以使用sizeof
功能:
help?>sizeof
搜索:sizeof
sizeof(s::AbstractString)
字符串s中的字节数。
sizeof(T)
给定数据类型T(如果有)的规范二进制表示的大小(字节)。
julia>x=rand(100100);
julia>sizeof(x)
80000
这是出乎意料的,x
既不是字符串也不是类型。是的,出乎意料的事实上,如果只阅读描述,您可以打开一个PR或问题到文档中,为了添加此内容,如果您愿意,我现在不能这样做,但将在其他时间尝试这样做,应该相当容易。也许它应该读sizeof(x)\n Size,在essentials.jl:87
中,对于此方法,x对象的规范二进制表示形式的字节数。sizeof(x)似乎还有许多对象类型不适用于sizeof(我在提问之前已经尝试过,但应该在我的文本中提及)。例如,我有一个稀疏矩阵存储为数据。由此,我得到了两个不同的结果:Base.summarysize(Data)##483747752
sizeof(Data)##40
@airetiessizeof
给出对象的大小,而summarysize
递归求和对象及其字段的大小Data
包含一些对其字段的引用,这些字段不是位类型,因此sizeof
只计算指针大小,而不是实际的数据大小。在Julia 1.0中,它被重命名为VariInfo()。?它适用于用户类的实例吗?