[R-es] ¿Alguna explicación para este fenómeno? (Relativo al uso de memoria)

Carlos J. Gil Bellosta cgb en datanalytics.com
Jue Jun 13 21:26:05 CEST 2013


Hola, ¿qué tal?

Al final he descubierto el motivo del problema. Cierto que esperaba
cierto nivel de _overhead_, pero nunca tantísimo. Por mucho _overhead_
que haya, no se pasa de 7MB a 5GB.

El problema era que (a pesar de mi opción stringsAsFactors = F) los
niveles de los factores se copiaban íntegros en cada una de las
columnas de tipo factor de cada una de las tablas resultantes. Aunque
no se usasen.

He convertido los factores a caracter, he vuelto a trocear el df
resultante y el resultado ha sido:

> object.size(empresas)
33052680 bytes
> object.size(loans)
3813944 bytes

Es decir, con _overhead_ el tamaño del objeto resultante ha crecido en
un orden de magnitud (asumible), no en tres o cuatro (no asumible).

¿Seré yo el único al que los dichosos factores le han hecho perder
horas y horas de trabajo?

Salud,

Carlos J. Gil Bellosta
http://www.datanalytics.com


El día 13 de junio de 2013 20:54, Marcuzzi, Javier Rubén
<javier.ruben.marcuzzi en gmail.com> escribió:
> Estimados
>
> ¿que pasa con opciones como bigdata o semejantes? Tendría que probar, leer,
> etc., pero puede ser que algún algoritmo distinto solucione esos problemas.
> Recuerdo una presentación que creo que la realizó alguno de la lista donde
> utilizaba millones de datos, eran de aeropuertos, tráfico aéreo, algo de eso
> había leído en una oportunidad.
>
> Javier Marcuzzi
>
> -----Original Message----- From: Jose Luis Cañadas
> Sent: Thursday, June 13, 2013 3:42 PM
> To: r-help-es en r-project.org
> Subject: Re: [R-es] ¿Alguna explicación para este fenómeno? (Relativo al uso
> de memoria)
>
>
> Interesante... y preocupante.
> No propuso alguien, no hace mucho, reescribir R desde el principio por
> este tipo de cosas?
> El 13/06/13 20:04, Carlos Ortega escribió:
>>
>> Hola,
>>
>> Si este comportamiento se ve con cualquier data.frame que luego conviertas
>> a lista:
>>
>>>
>>> v <- 1:10
>>> w <- split(v, 1:2)
>>> w
>>
>> $`1`
>> [1] 1 3 5 7 9
>>
>> $`2`
>> [1]  2  4  6  8 10
>>
>>> object.size(v)
>>
>> 88 bytes
>>>
>>> object.size(w)
>>
>> 464 bytes
>>>
>>> object.size(w[[1]])
>>
>> 72 bytes
>>
>> Y he encontrado una explicación que entiendo parcialmente está aquí:
>>
>>
>>
>> http://stackoverflow.com/questions/15848590/confusing-size-of-objects-in-r/15850414#15850414
>>
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>>
>> El 13 de junio de 2013 18:35, Carlos J. Gil Bellosta
>> <gilbellosta en gmail.com>escribió:
>>
>>> Hola, ¿qué tal?
>>>
>>> Tengo un df relativamente chiquito:
>>>
>>>> dim(loans)
>>>
>>> [1] 15172    22
>>>>
>>>> object.size(loans)
>>>
>>> 7488144 bytes
>>>
>>> Sin embargo,
>>>
>>> empresas <- split(loans, loans$number_id)
>>> length(empresas)
>>> #8748
>>>
>>> object.size(empresas)
>>> # 50643907728 bytes
>>>
>>> Es decir, el objeto resultante de partir un df de 15000 filas en 8700
>>> dfs ocupa 5GB.
>>>
>>> ¿Alguna idea de por qué ocurre esto?
>>>
>>> (Uso R 3.0.1 en un Xubuntu 12.04 de 64 bits).
>>>
>>> Un saludo,
>>>
>>> Carlos J. Gil Bellosta
>>> http://www.datanalytics.com
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es en r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>
>>
>>
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>
> [[alternative HTML version deleted]]
>
>
>
>
>
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es