相关疑难解决方法(0)

Swift Dictionary即使在优化的情况下也会变慢:执行uncessary retain/release?

下面的代码将简单的值持有者映射到布尔值,在Java中的运行速度比Swift 2 - XCode 7 beta3,"最快,最具侵略性的优化[-Ofast]"以及"快速,整体模块优化"开启速度快20倍.我可以在Java中获得超过280M的查询/秒,但在Swift中只有大约10M.

当我在Instruments中查看它时,我发现大多数时间都会进入与地图查找相关的一对保留/释放调用.任何关于为什么会发生这种情况或解决方法的建议都将受到赞赏.

代码的结构是我的真实代码的简化版本,它具有更复杂的密钥类,并且还存储其他类型(尽管布尔值是我的实际情况).另外,请注意我使用单个可变键实例进行检索以避免在循环内分配对象,根据我的测试,这在Swift中比在不可变键中更快.

编辑:我也试过切换到NSMutableDictionary,但当与Swift对象一起使用时,它看起来非常慢.

EDIT2:我已经尝试在objc中实现测试(它没有可选的解包开销)并且速度更快但仍然比Java慢一个数量级...我将把这个例子作为另一个问题提出来看看是否有人有想法.

EDIT3 - 答案.我在下面的答案中公布了我的结论和解决方法.

public final class MyKey : Hashable {
    var xi : Int = 0
    init( _ xi : Int ) { set( xi ) }  
    final func set( xi : Int) { self.xi = xi }
    public final var hashValue: Int { return xi }
}
public func == (lhs: MyKey, rhs: MyKey) -> Bool {
    if ( lhs === rhs ) { return true }
    return lhs.xi==rhs.xi …
Run Code Online (Sandbox Code Playgroud)

performance swift swift2

11
推荐指数
1
解决办法
2759
查看次数

标签 统计

performance ×1

swift ×1

swift2 ×1