gpt4 book ai didi

r - 如何计算一般类型的分配内存大小

转载 作者:行者123 更新时间:2023-12-04 09:24:32 25 4
gpt4 key购买 nike

我需要处理一些使用 read.table 从 csv(逗号分隔值)读取的数据库,并且我想知道如何计算为每种类型的变量分配的内存大小。

怎么做?

编辑——换句话说:R 为从 .csv 文件读取的一般数据帧分配了多少内存?

最佳答案

您可以使用object.size 获取分配给对象的内存量。例如:

x = 1:1000
object.size(x)
# 4040 bytes

This script也可能有帮助 - 它可以让您查看或绘制所有当前对象使用的内存量。

在回答为什么 object.size(4) 是 48 字节的问题时,原因是每个数字向量都有一些开销。 (在 R 中,数字 4 不仅仅是其他语言中的整数 - 它是长度为 1 的数字向量)。但这不会影响性能,因为开销不会随着向量的大小而增加。如果您尝试:

> object.size(1:100000) / 100000
4.0004 bytes

这表明每个整数本身只需要 4 个字节(如您所料)。

因此,总结:

  • 对于长度为 n 的数值向量,字节大小通常为 40 + 8 * floor(n/2)。然而,在我的 R 和 OS 版本上有一个轻微的不连续性,它跳到 168 字节的速度比你预期的要快(见下图)。除此之外,线性关系成立,甚至到长度为 10000000 的向量。

    plot(sapply(1:50, function(n) object.size(1:n)))

enter image description here

  • 对于分类变量,您可以看到非常相似的线性趋势,但开销稍大(见下文)。除了一些轻微的不连续性外,该关系非常接近 400 + 60 * n

    plot(sapply(1:100, function(n) object.size(factor(1:n))))

enter image description here

关于r - 如何计算一般类型的分配内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14717826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com