This is an interesting analysis.  I am interested in knowing answer to the OP’s second question.<br><br>Also, what were the some cases where the behaviour is different? <br><div class="gmail_quote"><div dir="ltr">On Fri, 17 Nov 2017 at 8:52 AM, Oscar Bonilla via swift-dev &lt;<a href="mailto:swift-dev@swift.org">swift-dev@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div>
<div style="word-wrap:break-word;line-break:after-white-space">
<div>
<div class="m_6888370555740406704x_BodyFragment"><font size="2"><span style="font-size:10pt">
<div class="m_6888370555740406704x_PlainText">Hi swift-dev,<br>
<br>
I was trying to determine the most efficient way to store constants in swift without impacting compilation time. I started off by creating a python script (attached) that just creates a swift file with a single type with 1, 2, 4, 8, …, 1024 fields. The type
 could be enum, struct, or class. And the field declaration can be ‘case’ (for enum), ‘let’, or ‘static let’.<br>
<br>
Now to the interesting part, I plotted the size of the resulting .o file and this is what I got:<br>
<br>
</div>
</span></font></div>
<div></div>
</div>
</div>
<div><img src="cid:2abbcede-fca6-44d2-9a84-72a6546d02a8@namprd21.prod.outlook.com">
</div>
<div style="word-wrap:break-word;line-break:after-white-space">
<div>
<div></div>
<div class="m_6888370555740406704x_BodyFragment"><font size="2"><span style="font-size:10pt">
<div class="m_6888370555740406704x_PlainText"><br>
<br>
Looking at this it looks like enum/case is the way to go, however I also plotted the time it took to compile the swift file:<br>
<br>
</div>
</span></font></div>
<div></div>
</div>
</div>
<div><img src="cid:9a4cb1fa-556b-48c0-87bc-8bf03458ceae@namprd21.prod.outlook.com">
</div>
<div style="word-wrap:break-word;line-break:after-white-space">
<div>
<div></div>
<div class="m_6888370555740406704x_BodyFragment"><font size="2"><span style="font-size:10pt">
<div class="m_6888370555740406704x_PlainText"><br>
<br>
One thing that surprised me is that for some common cases (enum/case, class/let, and struct/let) the compilation time seems at least quadratic.<br>
<br>
Is this something that is well known or have I stumbled on a corner-case?<br>
<br>
I’m attaching both the script I used for generating the tests and the R script used for plotting. (Please excuse the small images, I tried sending the email with large images and it bounced).</div>
<div class="m_6888370555740406704x_PlainText"><br>
</div>
<div class="m_6888370555740406704x_PlainText">What is the most space/compile time efficient way to handle constants?<br>
<br>
Cheers,<br>
<br>
-Oscar<br>
<br>
<br>
</div>
</span></font></div>
</div>
</div>
<div style="word-wrap:break-word;line-break:after-white-space"></div>
<div style="word-wrap:break-word;line-break:after-white-space"></div>
</div>

_______________________________________________<br>
swift-dev mailing list<br>
<a href="mailto:swift-dev@swift.org" target="_blank">swift-dev@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-dev" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-dev</a><br>
</blockquote></div><div dir="ltr">-- <br></div><div class="gmail_signature" data-smartmail="gmail_signature">Rahul<br><br>Sent from iPhone<br><br></div>