从跟踪中删除swift_deallocClassInstance

时间:2016-10-19 01:17:31

标签: swift macos profiling

我一直在尝试优化一些Swift代码,并且看到了这个痕迹:

308.00 ms   10.2%   25.00 ms                    swift_deallocClassInstance

我不知道造成它的原因是什么,并试图弄清楚该方法中会释放什么。有没有人看到这个出现在配置文件中或知道是什么导致它。它出现在这种方法中。我已经查看了任何排序类型的变量,但似乎无法确定它。其中一种方法是使用一些静态struct OptionSet,但我不认为会导致它。传递的所有其他参数均为​​Ints

超过实际方法的50%和总体跟踪的10%:

final func generateTextures(options: TextureOptions, baseLevel: Int) -> [AreaData] {

    otherMethodCall();
    methodCall()

    for i in 0..<size {
        ...
    }

    for i in 0..<width {
        switch someVar {
        ...
        default:
            switch someVar {
            ...
            }
        }
    }


    for i in stride(from: width - 1, to: size, by: width) {
        switch someVar {
            ....
        default:
            switch someVar{
                ...
            }
        }
    }



    // post processing
    for i in 0..<size {
        ... method
    }

    for i in 0..<size {
        ..some more stuff
    }

    for i in 0..<size {
        ..some more stuff

    }

    anotherMethod()
    return someMethod()

}

1 个答案:

答案 0 :(得分:0)

我删除了该方法中的所有选项集使用,并直接转到原始Int&#39; s,这个巨大的打击消失了。我曾希望他们直接将选项集编译为int或原始值操作,我猜不是。