Next: Vectors, Previous: Structure Representation, Up: Object Representation [Contents][Index]
Arrays are often the most efficient representation for collections of objects because:
Access of arrays that are not of type simple-array
is less
efficient, so declarations are appropriate when an array is of a
simple type like simple-string
or simple-bit-vector
.
Arrays are almost always simple, but the compiler may not be able to
prove simpleness at every use. The only way to get a non-simple array
is to use the :displaced-to
, :fill-pointer
or
adjustable
arguments to make-array
. If you don’t use
these hairy options, then arrays can always be declared to be simple.
Because of the many specialized array types and the possibility of non-simple arrays, array access is much like generic arithmetic (see generic-arithmetic). In order for array accesses to be efficiently compiled, the element type and simpleness of the array must be known at compile time. If there is inadequate information, the compiler is forced to call a generic array access routine. You can detect inefficient array accesses by enabling efficiency notes, see efficiency-notes.
Next: Vectors, Previous: Structure Representation, Up: Object Representation [Contents][Index]