为啥光栅文件大小与对象大小有很大不同?

Posted

技术标签:

【中文标题】为啥光栅文件大小与对象大小有很大不同?【英文标题】:Why is raster filesize is so much different than objectsize?为什么光栅文件大小与对象大小有很大不同? 【发布时间】:2019-11-30 10:32:33 【问题描述】:

我的磁盘上有一个 1.2 GB 的 .csv 文件。我使用Rfilename = read.csv(path)-函数,然后通过object.size(filename) 检查对象大小,结果发现它有3721MB 大。为什么会有这种差异?

【问题讨论】:

【参考方案1】:

CSV 文件是纯文本文件,可能如下所示:

1,2,3,4
3,2,3,2
3,4,2,1

每个字符(即数字和逗号)都是一个字节。该文件有 24 字节大(每行末尾都有一个不可见的“换行符”字符)。

读入 R 时,每个数字都存储为浮点十进制数,即 8 个字节。上面的文件将是 8*24(值)= 96 字节大。

它可以走另一条路。如果改为写入上述文件:

1.0000000000, 2.0000000000, 3.00000000000, 4.000000000
[etc]

然后在 CSV 中,每个数字占用大约 12 个字节 - 每个数字、小数点、命令和零占用一个字节 - 当读入 R 时,仍然只占用 8 个字节作为浮点十进制值。

【讨论】:

以上是关于为啥光栅文件大小与对象大小有很大不同?的主要内容,如果未能解决你的问题,请参考以下文章

为啥聚合/裁剪后我的光栅文件大小会增加?

为啥bmp文件的实际大小与我计算的不同?

React Native(Expo)文件对象与 Javascript(jQuery)文件对象 - Blob/文件大小不同(YouTube 数据 API)

为啥 XMLHttpRequest 响应的长度与请求文件的大小不同?

为啥 python pickle 加载和转储会膨胀磁盘上对象的大小?

为啥 RStudio/R 中显示为 1 GB 大小的对象会被 RData 或 RDS 文件格式以更大的大小保存,即使没有压缩?