首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift协议性能

Swift协议性能
EN

Stack Overflow用户
提问于 2016-07-02 03:05:46
回答 1查看 688关注 0票数 18

这个问题涉及到Swift 2.2中作为协议扩展编写的函数的效率。有没有人知道一种加速这个运行时的方法?

假设我有一个Int符合的协议号

代码语言:javascript
运行
复制
protocol Number: Equatable, IntegerLiteralConvertible {
    init(_ int: Int)
    init(_ number: Self)
    func +(lhs: Self, rhs: Self) -> Self
    func *(lhs: Self, rhs: Self) -> Self
    func -(lhs: Self, rhs: Self) -> Self
    func /(lhs: Self, rhs: Self) -> Self
}
extension Int: Number { }

现在我想写一个阶乘函数作为Number的扩展

代码语言:javascript
运行
复制
extension Number {
    func factorialNumber() -> Self {
       if self == 0 { return 1 }
       return self * (self - 1).factorialNumber()
    }
}

我还编写了与Int的扩展相同的函数

代码语言:javascript
运行
复制
extension Int {
    func factorialInt() -> Int {
        if self == 0 { return 1 }
        return self * (self - 1).factorialInt()
    }
}

当我测量这些函数的运行时间时,会发现有很大的不同。

此屏幕截图启用了全模块优化。

我猜在运行时泛型会带来一些开销。有没有更好的方法来做这件事?仅仅编写相同的函数作为Int,Double,Float的扩展,而不是试图编写一个协议函数,这有意义吗?

谢谢

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38152433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档