object size of a matrix and a list
You were doing for a small size where the overhead masked the gains. Here a larger case where you can see the differences:
#matrix beta.mat <- matrix(0,nr=500, nc=200) #list gamma.mat <- list(a= matrix(1L, 500, 100), b=matrix(1.0, 500, 100)) object.size(beta.mat)
[1] 800112
object.size(gamma.mat)
[1] 600408
str(gamma.mat)
List of 2 $ a: int [1:500, 1:100] 1 1 1 1 1 1 1 1 1 1 ... $ b: num [1:500, 1:100] 1 1 1 1 1 1 1 1 1 1 ...
How big do you expect your data items to get? No need to try to optimize if they are not large (e.g., taking up 10% of your available memory).
On Wed, Mar 18, 2009 at 10:14 PM, Kyeongmi Cheon <katie.cheon at gmail.com> wrote:
Hello,
My program calculates several variables at each iteration and some of them are
integers and the rest are numeric. When I save them into a matrix, all of them
are of numeric type, of course.
I'm trying to find a way to save time/memory of my program and I was thinking
that it might help to force some variables to be of integer type and the other
columns numeric type.
But when I actually tried it, I found it contrary. A list that has mixtures of
integers and doubles are larger in size than a matrix that has only doubles. Do
lists always take up more space than matrices if they have the same/similar
variables? I just want to know it for the sake of efficiency. Thank
you for your time.
Kyeongmi
My short test program is here:
? #matrix
? beta.mat <- matrix(0,nr=5, nc=2)
? for (i in 1:5){
? ? ?beta.mat[i,] <- c(i,i*10.0)
? }
? #list
? gamma.mat <- list()
? for (i in 1:5){
? ? ?gamma.mat$aa[i] <- i
? ? ?gamma.mat$bb[i] <- i*10.0
? }
? object.size(beta.mat) #240
? object.size(gamma.mat) #312
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?