我一直在尝试优化一些 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/