I think that my change exposed a latent performance bug in the constraint 
solver. Let’s followup in a bug report:

https://bugs.swift.org/browse/SR-5669 <https://bugs.swift.org/browse/SR-5669>



> On Aug 9, 2017, at 16:47, Mark Lacey <mark.la...@apple.com> wrote:
> 
> 
> 
>> On Aug 9, 2017, at 11:33 AM, Arnold Schwaighofer <aschwaigho...@apple.com 
>> <mailto:aschwaigho...@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@swift.org <mailto:swift-dev@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 <notificati...@github.com 
>>>> <mailto:notificati...@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@swift.org <mailto:swift-dev@swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-dev 
>>> <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