¿Por qué es preallocation útil para la lista?

Entiendo que es útil preasignar un vector o una matriz, porque siempre se almacenan en un bloque de memoria contiguo.

Sin embargo, en términos de una lista, puede contener elementos de longitud y modos de diferencia. Así que mi primera conjetura es queuna lista podría simplemente contener punteros a la verdadera dirección de sus elementos. ¿Estoy en lo correcto? Una pregunta relacionada aquí¿Qué es la implementación interna de listas? Dice que la lista es esencialmente una matriz, pero no cubre cómo se almacenan los elementos en una lista, mientras que el tamaño de cada elemento puede cambiar.

Ejemplo 1: si una lista contienea,b,c,d,e, y cuandomyList$a<-1:1000000, es la lista modificada en el lugar (lo que significa sóloa se actualiza) o toda la lista se copia y actualiza?

Ejemplo 2

> system.time( { myList <- list()
+                myList$a <- 1:10000000
+                myList$b <- 1:10000100
+                myList$c <- 1:10000200 
+                myList$d <- 1:10000300})
   user  system elapsed 
   0.01    0.02    0.03

> system.time({ myList2<-list(a=1:10000000,b=1:10000100,c=1:10000200,d=1:10000300) })
   user  system elapsed 
   0.00    0.03    0.03 

haríamyList ser muy ineficiente en comparación conmyList2 ¿Debido a no preasignación? O no hay una diferencia notable en el rendimiento, no importa cuán grande seaa,b,c,d ¿Porque la primera copia solo los punteros un par de veces más?

Aquí viene a la preasignación. ¿Cómo se ve para una lista? ¿Solo preasigna la memoria para los punteros? Si ese es el caso, no veo ningún uso ya que de todos modos no habrá mucha copia de datos para los punteros.

> system.time( { myList <- vector("list", 4)
+                myList[[1]] <- 1:10000000
+                myList[[2]] <- 1:10000100
+                myList[[3]]  <- 1:10000200 
+                myList[[4]] <- 1:10000300
+                names(myList) <- letters[1:4]})
   user  system elapsed 
   0.01    0.02    0.03 

Respuestas a la pregunta(2)

Su respuesta a la pregunta