- Performance equivalent to C arrays for subscript get/set of non-class element types is the most important performance goal.
- It should be possible to receive an
NSArrayfrom Cocoa, represent it as an
Array<AnyObject>, and pass it right back to Cocoa as an
NSArrayin O(1) and with no memory allocations.
- Arrays should be usable as stacks, so we want amortized O(1) append and O(1) popBack. Together with goal #1, this implies a
std::vector-like layout, with a reserved tail memory capacity that can exceed the number of actual stored elements.
To achieve goals 1 and 2 together, we use static knowledge of the element type: when it is statically known that the element type is not a class, code and checks accounting for the possibility of wrapping an
NSArrayare eliminated. An
Arrayof Swift value types always uses the most efficient possible representation, identical to that of
This thread was posted by one of our members via one of our news source trackers.