Guest User

Untitled

a guest
Jul 15th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. library(MSnbase)
  2. n <- 10000
  3. ll <- vector("list",length=n)
  4. e <- new.env()
  5. tl <- system.time(for (i in 1:n)
  6. ll[[i]] <- new("Spectrum2"))
  7. te <- system.time(for (i in 1:n)
  8. assign(paste("X",i,sep=""),new("Spectrum2"),e))
  9.  
  10. ## Results for n=10000
  11. ##> te
  12. ## user system elapsed
  13. ## 10.640 0.020 10.728
  14. ##> tl
  15. ## user system elapsed
  16. ## 9.900 0.020 10.139
  17.  
  18. ## BUT -- A common problem is with subset-assign on list elements
  19. ## Thanks to Martin Morgan for this example
  20.  
  21. setClass("Lst", representation=representation(l="list"))
  22. Lst <- function(l, ...) new("Lst", l=l, ...)
  23. setClass("Env", representation=representation(e="environment"))
  24. Env <- function(e, ...) new("Env", e=e, ...)
  25.  
  26. l <- replicate(5, matrix(0, 1e3, 1e3),simplify=FALSE)
  27. names(l) <- letters[seq_len(length(l))]
  28. lst <- Lst(l=l)
  29. env <- Env(e=list2env(l))
  30.  
  31.  
  32. ##> system.time(lst@l[["a"]][1,1] <- 1)
  33. ## user system elapsed
  34. ## 0.080 0.000 0.077
  35. ##> system.time(env@e[["a"]][1,1] <- 1)
  36. ## user system elapsed
  37. ## 0.000 0.000 0.005
  38.  
  39. ## Because lst@l is copying the entire object
  40. ## which also implies memory overhead
Add Comment
Please, Sign In to add comment