2016-08-26 4 views
-2

Рассмотрим два вектора:Измерение использование памяти в R

a <- 1 
b <- 1:100 

Почему результат этой строки кода:

sum(sapply(ls(),function(x){utils::object.size(get(x))})) 
#488 (bytes) 

отличается от этой строки кода:

utils::object.size(ls()) 
#152 bytes 
+3

Поскольку 'Ls()' вектор символ, содержащий имена объектов в глобальной окружающей среде, в то время как 'получить (х)' является фактическим объектом , –

ответ

4

Первая версия дает правильный результат:

object.size(a) ## 32 Bytes 
object.size(b) ## 424 Bytes 
sum(sapply(ls(),function(x){utils::object.size(get(x))})) ## 456 Bytes 

Хотя второе, делает по существу:

object.size(c("a", "b")) ## 96 Bytes 
Смежные вопросы