考虑以下向量x
and y
x <- "a"
y <- deparse(x)
From ?nchar
nchar
接受一个字符向量作为参数并返回一个向量,其元素包含 x 相应元素的大小。
并从?object.size
计算的是对象的大小,不包括在符号表中存储其名称所需的空间。
有了这两个定义,对象大小不应该是y
在内存中大于x
?
> nchar(x) == nchar(y)
[1] FALSE
> object.size(x) == object.size(y)
[1] TRUE
机器信息:
> version[[1]]
# [1] "x86_64-pc-linux-gnu"
不必要。您通常不会为字符串预留确切的内存量,因为这使得跳过并在内存中找到您需要的内存变得困难,因此分配将以块的形式进行。观察
rv<-1:100
os<-sapply(rv, function(x) object.size(paste0(rep("a",x), collapse="")))
plot(rv,os, xlab="string length", ylab="object size")
在这里,我们创建字符串“a”、“aa”、“aaa”、“aaaa”等并查看对象大小。请注意,对象的大小不会随着每个附加字符而增加,但当您超过阈值时,您会获得分配给您的更大块。
因此,对象大小并不能告诉您数据实际占用了多少字节,它只是告诉您已预留了多少字节。并不存在真正相同的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)