注目の投稿

【kepler.gl】コロナ対策による人流の変化も地図上に可視化(各種メディアで報道)

kepler.glのサイト画面 kepler.glを使ってコロナ対策の効果を分析したところ、テレビ、新聞、ネットのメディアから問い合わせや報道依頼が殺到。今も、土日返上で都内や全国の人流変化を分析しています。この記事では人流変化の可視化に便利なkepler.glにつ...

2017年7月22日土曜日

R 数字の桁数増やしてもメモリ増えないぞ!? object.sizeで実験してみた

object.sizeを使うと、ベクトルやデータフレームなどのオブジェクトのメモリ使用量を確認することができるのだが。。試しに、ちょっと実験してみたら不思議なことが起こった。

まず、サンプルのベクトルとデータフレームを用意する。

> v.x <- c(1,2,3)
> v.x1 <- c("a","b","c")
>
> v.y <- c(1,2,30)
> v.y1 <- c("A","B","C")
>
> df.x <- data.frame(id = v.x, name = v.x1)
> df.y <- data.frame(id = v.y, name = v.y1)

object.sizeでメモリ使用量を調べる。

> object.size(v.x)
72 bytes
> object.size(v.x1)
216 bytes
> object.size(df.x)
1360 bytes
> object.size(v.y)
72 bytes
> object.size(v.y1)
216 bytes
> object.size(df.y)
1360 bytes
>

ふむふむ。なるほどー。

やっぱり、数字(v.x)よりも文字列(v.x1)の方がメモリ食ってるな。

てか、72 bytes(v.x)のベクトルと216(v.x1)のベクトルでデータフレーム(df.x)を作ると、メモリが1360 bytesに跳ね上がるのかー

v.x1とv.y1の結果を見ると、小文字と大文字でメモリ使用量に変化はなさそう。

あと、v.xとv.yもメモリ使用量が変わっていないので、数字が一桁から二桁に増えたのが混ざってもあまり影響はないのかー。ちょっと、桁数をすごい増やしてみるか。

> v.z <- c(1,2,3000000000000000000000000000)
> object.size(v.z)
72 bytes

あれ??桁数すごい増やしたけど全然メモリ増えない!マジで!

なんでだろ??


0 件のコメント :

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。