[swift-dev] Debugging performance regressions?

Mark Lacey mark.lacey at apple.com
Wed Aug 9 15:47:38 CDT 2017



> On Aug 9, 2017, at 11:33 AM, Arnold Schwaighofer <aschwaighofer at apple.com> wrote:
> 
> Mark do you have suggestions for Dave?

I’d suggest something similar to what Pavel said. My usual first step is to look at the output of -Xfrontend -debug-constraints, which in cases like this tends to be so verbose that you have to kill the compile after a little while and a few megabytes of output and start reviewing that output. Key things to look for are “(assuming”, which is printed for each disjunction choice, and “(trying” which is printed before each attempt at trying a type binding.

I took a quick look at this and based on the before/after output it looks like perhaps an optimization that picks favored overloads is no longer firing after your PR. As a result, rather than trying and successfully solving using integer operations for the arithmetic and stopping there, we exponentially attempt all combinations of all overloads of those operators. It would be very interesting to understand why that is since based on the description I would not expect your PR to have an impact on that.

Mark

> 
>> On Aug 9, 2017, at 11:22 AM, David Zarzycki via swift-dev <swift-dev at swift.org <mailto:swift-dev at swift.org>> wrote:
>> 
>> Any tips on how to debug performance regressions?
>> 
>> And as aside, if this test is critical enough to cause a revert, why isn’t it in the public repo?
>> 
> 
> This is part of a larger internal test.
> 
>> 
>>> On Aug 9, 2017, at 14:04, Arnold Schwaighofer <notifications at github.com <mailto:notifications at github.com>> wrote:
>>> 
>>> Hi Dave,
>>> I have reverted this commit because it broke internal bots.
>>> 
>>> import Foundation
>>> class P {
>>>     var x : Int = 0
>>>     var y : Int = 1
>>> }
>>> 
>>> let dist : (P, P) -> Double = {
>>>   (p : P, s : P)  -> Double in
>>>     sqrt(Double((p.x-s.x)*(p.x-s.x) + (p.y-s.y)*(p.y-s.y)))
>>> }
>>> fails now with expression to complex.
>>> 
>>>>>> You are receiving this because you authored the thread.
>>> Reply to this email directly, view it on GitHub <https://github.com/apple/swift/pull/11397#issuecomment-321334844>, or mute the thread <https://github.com/notifications/unsubscribe-auth/ABBbbrS4O6QyW6_j4ksVB-fo2EPtmbWVks5sWfSigaJpZM4Oxfg->.
>>> 
>> 
>> _______________________________________________
>> swift-dev mailing list
>> swift-dev at swift.org <mailto:swift-dev at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-dev
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20170809/5d9e519f/attachment.html>


More information about the swift-dev mailing list