Rはオブジェクトを格納するための標準的なオーバヘッドを持っていると思っていましたが(24バイト、少なくとも整数ベクトルのようです)、単純なテストでは実現したより複雑です。例えば、長さ100までの整数ベクトルを取る(任意のsneaky sequence compression tricks that might be out thereを避けることを望んで、ランダムサンプリングを使用して)、私は次のように異なる長さのベクトルが、同じ大きさを持っていることがわかっ:整数ベクトルのサイズR
> N = 100
> V = vector(length = 100)
> for(L in 1:N){
+ z = sample(N, L, replace = TRUE)
+ V[L] = object.size(z)
+ }
>
> options('width'=88)
> V
[1] 48 48 56 56 72 72 72 72 88 88 88 88 104 104 104 104 168 168 168 168
[21] 168 168 168 168 168 168 168 168 168 168 168 168 176 176 184 184 192 192 200 200
[41] 208 208 216 216 224 224 232 232 240 240 248 248 256 256 264 264 272 272 280 280
[61] 288 288 296 296 304 304 312 312 320 320 328 328 336 336 344 344 352 352 360 360
[81] 368 368 376 376 384 384 392 392 400 400 408 408 416 416 424 424 432 432 440 440
私がすることによって非常に感銘を受けた152
の値が表示されます(観測値:152 = 128 + 24、280 = 256 + 24はそれほど顕著ではありません)。誰かがこれらの配分がどのように起こるか説明できますか? V細胞が出現しても、私はドキュメンテーションで明確な定義を見つけることができませんでした。
これは 'object.size'の実装の成果物である可能性があります。ヘルプがそれを見積もりとして説明する方法に注意してください。 –
@Nick:ああ、それは大げさなものです。なぜなら、私は 'object.size()'に多く依存しているからです。ポインタありがとう。私がそれを読んでいるとき、起こりうる帰属(あるいは多分エンコーディング)問題のために不確実性が生じる。しかし、人生で整数ベクトルよりも単純すぎることはありません。 – Iterator
再利用はしばしば隠されているので注意しなければならないが、私は同意する。 –