<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 22, 2017, at 1:03 PM, piotr gorzelany via swift-users <<a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Hi, I hope I reached the right mailing list to ask a question about tooling.<div class=""><br class=""></div><div class="">Can somebody from the compiler or Xcode team share some tips on how to improve compilation times of larger Swift projects?</div><div class=""><br class=""></div><div class="">I am an iOS developer and the largest issue my team has with Swift so far is that when the project gets semi large (~30 000 lines) the compilation times start to be high (~10 minutes from clean). This is a MAJOR downside since iOS development oftentimes requires rapid changes to UI or logic. Every person of my team compiles a project at least 10 times a day to test new features or functionalities. When compilation times start to be higher than 10 minutes that gets us to ~1.5h a day of developer time spend just on compiling. Not to mention the focus lost when this is happening.</div><div class=""><br class=""></div><div class="">I know the Swift Evolution list is buzzing with new ideas and features but from my experience the compilation times is a CRITICAL thing to improve in the next Swift release since it cost real money to waste all those developer hours. Just think of all the hours lost on compiling across all Swift devs worldwide and you will get to probably dozens of thousand of dev hours a day.</div><div class=""><br class=""></div><div class="">Is the core compiler team going to address compilation performance in the next release?</div><div class=""><br class=""></div><div class="">Maybe there is an existing solution to long compilation times that we don't know of? It would be great if anybody could share.</div><div class="">I was thinking maybe of dividing the app into multiple frameworks since I think frameworks are compiled only once only on change?</div></div></div></blockquote><br class=""></div><div>Build time is always a goal. Pretty much every version of Swift has had changes intended to improve compilation time or decrease the frequency of recompilation.</div><div><br class=""></div><div>Often a large part of the build time is spent in a handful of places where the compiler's type inference system behaves poorly. You can use the -debug-time-function-bodies and -debug-time-expression-type-checking flags to look for these places. You can often get huge decreases in compile time by adding an explicit type declaration in the right place in order to simplify the type inference engine's job.</div><div><br class=""></div><div>Here's a walkthough of one such analysis:</div><div>Profiling your Swift compilation times</div><div><a href="http://irace.me/swift-profiling" class="">http://irace.me/swift-profiling</a></div><br class=""><div class=""><br class=""></div><div class="">-- </div><div class="">Greg Parker <a href="mailto:gparker@apple.com" class="">gparker@apple.com</a> Runtime Wrangler</div><div class=""><br class=""></div><div class=""><br class=""></div></body></html>