> On Oct 4, 2016, at 2:38 PM, Ben Asher via swift-dev <swift-dev@swift.org> 
> wrote:
> 
> Hello! I work with a large project (~900 .swift files and more .m files). We 
> have a nightly job that compiles the app and calls out function bodies (using 
> -debug-time-function-bodies) that are slower than 100ms to compile. Since 
> upgrading to Swift 3, the number of trouble function bodies has one from > 
> 150 to < 20, so we're really happy about that! The only issue though is that 
> build time overall increased by ~1 min (amount of time to build all targets 
> before automatically merging to master in our integration build).

Is this using a particular release of Xcode (8.0 or an 8.1 beta?), or with one 
of the toolchain builds from swift.org <http://swift.org/>?

Xcode 8.1 beta 2 includes some type checker performance improvements which 
might have an impact here.

> 
> To dig into this further, we've started a new nightly job that builds the app 
> using the -debug-time-compilation flag, and using that we've found that some 
> files take as long as 2-3 seconds to compile. But, there's no targeted output 
> to help us get this down via the -debug-time-function-bodies flag (i.e. no 
> function bodies that we can refactor to get compile times much faster).

One thing to look out for here is that I believe there are some cases where 
-debug-time-function-bodies isn’t reporting type checking time. From my 
(potentially faulty) recollection, things like let bindings with literals or 
closures on the right hand side do not show up in the 
-debug-time-function-bodies output, and depending on the specifics of the 
expression these can sometimes take a long time to type check. When these 
appear within the body of another type declaration they can end up getting type 
checked multiple times during a full project build, and that time can add up.

I don’t believe there is a bug open for improving -debug-time-function-bodies 
to help diagnose this, but opening a bug would be appreciated if you can 
confirm that this is the case, and of course patches to fix it are definitely 
welcome as well.

Mark

> We can see that most of the time is spent in "Type checking / Semantic 
> analysis" for these problem files, but we don't currently have any way of 
> knowing what that means. It feels like we've exhausted the available options 
> at this point (unless there are other flags I'm missing) in terms of existing 
> actionable debugging/profiling/reporting, so now our question is this: what 
> kind of reports would Swift maintainers be interested in seeing in terms of 
> output from profiling tools, etc. to help debug/diagnose these slow compile 
> issues? We're willing to devote time to tooling to help generate such reports 
> and file bugs.
> 
> Thanks!
> 
> Ben
> _______________________________________________
> swift-dev mailing list
> swift-dev@swift.org
> https://lists.swift.org/mailman/listinfo/swift-dev

_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to