[swift-users] problems with simple binary-trees program
Maurus Kühne
mauruskuehne at icloud.com
Sun Dec 20 12:54:55 CST 2015
> On 20.12.2015, at 19:08, Isaac Gouy via swift-users <swift-users at swift.org> wrote:
>
>> On Sunday, December 20, 2015 9:58 AM, Pascal Urban <mail at pscl.de> wrote:
>
> ...
>> Both of these implementations are slow because they always create binary trees
>
>> with a depth of maxDepth instead of, well, the correct depth.
>
> Thank you!
>
> As always, I suspected I'd made a dumb mistake - but just wasn't seeing it.
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
I was able to speed up David’s solution by almost 50% by changing the method checkTree from this:
func checkTree(t: Array<TreeNodeItem>, _ i: Int) -> Int
to this:
func checkTree(inout t: Array<TreeNodeItem>, _ i: Int) -> Int
It completes in about ~10s instead of ~20s on my 2.66GHz i5 iMac for n=20.
This also works together with Pascal’s libdispatch solution. In this case it completes in ~5s.
Here is the modified version: https://gist.github.com/mauruskuehne/633789417c2357a6bb93 <https://gist.github.com/mauruskuehne/633789417c2357a6bb93>
Could somebody explain to me why this is the case? I know what the inout keyword does, but I don’t understand why it makes the code faster in this case?
Maurus
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20151220/8231cb67/attachment.html>
More information about the swift-users
mailing list