The payloads are stored in-line by default, so yeah, the enum will be the size of its largest payload, possibly with extra space for tag bits if there's nowhere to cram the bits in the payload otherwise. You can mark your large, rare cases `indirect`, which will make the inline storage pointer-width, referencing a separate allocation:
enum MyEnum {
case mostCommonlyUsed
case somewhatCommon (Int,Int)
indirect case prettyRare (Int,Int,Int,Int,Int)
}
-Joe
···
On Apr 4, 2016, at 4:57 PM, Jonathan Hull via swift-users <swift-users@swift.org> wrote:
I had a quick question on the memory used by enums with associated values in the current implementation. If I have an enum like the following:
enum MyEnum {
case mostCommonlyUsed
case somewhatCommon (Int,Int)
case prettyRare (Int,Int,Int,Int,Int)
}If this enum is going to be used by tens/hundreds of thousands of structs, am I actually saving any space by breaking out the rarer cases which store more data or is the footprint just equal to the largest case?