> On 23 Mar 2017, at 08:27, David Hart <[email protected]> wrote:
>
> Yes, it's best to avoid concatenating strings with +. Not only for
> performance reasons, but it's also less readable than string interpolation:
>
> str += "No: \(count), HostIp: \(clientIp ?? "?") at port: \(service ?? "?")\n”
Concatenation may cause the increase, but this solved it too:
let (clientIpOrNil, serviceOrNil) =
sockaddrDescription(info.pointee.ai_addr)
let clientIp = clientIpOrNil ?? "?"
let service = serviceOrNil ?? "?"
str += "No: \(count), HostIp: " + clientIp + " at port: " + service +
"\n”
Regards,
Rien.
>
> On 23 Mar 2017, at 08:11, Rien via swift-users <[email protected]> wrote:
>
>> Thanks for that link, used it to track down the worst compile time offender:
>>
>> This piece of code:
>>
>> public func logAddrInfoIPAddresses(_ infoPtr:
>> UnsafeMutablePointer<addrinfo>) -> String {
>>
>> let addrInfoNil: UnsafeMutablePointer<addrinfo>? = nil
>> var count: Int = 0
>> var info: UnsafeMutablePointer<addrinfo> = infoPtr
>> var str: String = ""
>>
>> while info != addrInfoNil {
>>
>> let (clientIp, service) = sockaddrDescription(info.pointee.ai_addr)
>> str += "No: \(count), HostIp: " + (clientIp ?? "?") + " at port: " +
>> (service ?? "?") + "\n"
>> count += 1
>> info = info.pointee.ai_next
>> }
>> return str
>> }
>>
>> Took 38 seconds to compile.
>>
>> Removing the “str” assignment:
>>
>> public func logAddrInfoIPAddresses(_ infoPtr:
>> UnsafeMutablePointer<addrinfo>) -> String {
>>
>> let addrInfoNil: UnsafeMutablePointer<addrinfo>? = nil
>> var count: Int = 0
>> var info: UnsafeMutablePointer<addrinfo> = infoPtr
>> var str: String = ""
>>
>> while info != addrInfoNil {
>>
>> let (clientIp, service) = sockaddrDescription(info.pointee.ai_addr)
>> // str += "No: \(count), HostIp: " + (clientIp ?? "?") + " at port: "
>> + (service ?? "?") + "\n"
>> count += 1
>> info = info.pointee.ai_next
>> }
>> return str
>> }
>>
>> Brought it down to 6.6ms
>>
>> Obviously I have to rewrite, but it does show how just one line of code can
>> be responsible for approx 80% of the compile time.
>>
>> Regards,
>> Rien
>>
>> Site: http://balancingrock.nl
>> Blog: http://swiftrien.blogspot.com
>> Github: http://github.com/Balancingrock
>> Project: http://swiftfire.nl
>>
>>
>>
>>
>>
>>> On 22 Mar 2017, at 23:41, Greg Parker via swift-users
>>> <[email protected]> wrote:
>>>
>>>>
>>>> On Mar 22, 2017, at 1:03 PM, piotr gorzelany via swift-users
>>>> <[email protected]> wrote:
>>>>
>>>> Hi, I hope I reached the right mailing list to ask a question about
>>>> tooling.
>>>>
>>>> Can somebody from the compiler or Xcode team share some tips on how to
>>>> improve compilation times of larger Swift projects?
>>>>
>>>> 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.
>>>>
>>>> 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.
>>>>
>>>> Is the core compiler team going to address compilation performance in the
>>>> next release?
>>>>
>>>> Maybe there is an existing solution to long compilation times that we
>>>> don't know of? It would be great if anybody could share.
>>>> I was thinking maybe of dividing the app into multiple frameworks since I
>>>> think frameworks are compiled only once only on change?
>>>
>>> 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.
>>>
>>> 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.
>>>
>>> Here's a walkthough of one such analysis:
>>> Profiling your Swift compilation times
>>> http://irace.me/swift-profiling
>>>
>>>
>>> --
>>> Greg Parker [email protected] Runtime Wrangler
>>>
>>>
>>> _______________________________________________
>>> swift-users mailing list
>>> [email protected]
>>> https://lists.swift.org/mailman/listinfo/swift-users
>>
>> _______________________________________________
>> swift-users mailing list
>> [email protected]
>> https://lists.swift.org/mailman/listinfo/swift-users
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users