swift - 从跟踪中删除 swift_deallocClassInstance

标签 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()

}

最佳答案

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

关于swift - 从跟踪中删除 swift_deallocClassInstance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40120537/

相关文章:

swift - 使用 NSCollectionView 时断言失败

php - AJAX 调用的 Yii SQL 分析

linux - Perf 显示没有内存访问的 block 中的 L1-dcache-load-misses

swift - [unowned self] 是什么意思,有什么好处?

swift - 从闭包中呈现 View Controller

swift - Firebase swift 不检索所有子值

swift - 仅在 rx_tap 事件上调用方法

apache - XAMPP Apache Webserver localhost 无法在 MAC OS 上运行

c# - 创建 Game 类实例时出现 NullReferenceException (OpenTKGameWindow.Initialize)

java - Java VisualVM 中的 "total time (CPU)"是否包含 CPU 执行其他进程所花费的时间?