加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift编译时间对比

发布时间:2020-12-14 06:03:12 所属栏目:百科 来源:网络整理
导读:观察下面几种书写的方式 ,实现同样的功能(除了最后一个) ///编译时间对比(Xcode9,ios11,单位:毫秒) /// person 为一个optional的自定义对象(var person: Person? ),里面有个string? 类型的属性str1,str2.... func hahha() {//A: 23879.9mm// guard

观察下面几种书写的方式 ,实现同样的功能(除了最后一个)

///编译时间对比(Xcode9,ios11,单位:毫秒)
    /// person 为一个optional的自定义对象(var person: Person? ),里面有个string? 类型的属性str1,str2....
    func hahha() {
//A: 23879.9mm
//        guard let p = person else {
//            return
//        }
//        let str = (p.str1 ?? "") + (p.str2 ?? "") + (p.str3 ?? "") + (p.str4 ?? "")
//        label.text = str
        
//B: 21239.2mm
//        guard let p = person else {
//            return
//        }
//        let str: String? = (p.str1 ?? "") + (p.str2 ?? "") + (p.str3 ?? "") + (p.str4 ?? "")
//        label.text = str
        
//C: 16039.6
//        guard let p = person else {
//            return
//        }
//        let str: String = (p.str1 ?? "") + (p.str2 ?? "") + (p.str3 ?? "") + (p.str4 ?? "")
//        label.text = str
     
//D: 43.5mm
//        guard let p = person else {
//            return
//        }
//        let strs: [String?] = [p.str1,p.str2,p.str3,p.str4]
//        let str: String = strs.reduce("") { (result,str) -> String in
//            if let noNul = str {
//                return result + noNul
//            } else {
//                return result
//            }
//        }
//        label.text = str
        
//E: 39.2mm
//        guard let p = person else {
//            return
//        }
//        let strs: [String?] = [p.str1,p.str4]
//        var str: String = ""
//        for ss in strs {
//            if let s = ss { str += s }
//        }
//        label.text = str
        
//F: 37.0mm
//        guard let p = person else {
//            return
//        }
//        var str: String = ""
//        if let str1 = p.str1 { str += str1 }
//        if let str2 = p.str2 { str += str2 }
//        if let str3 = p.str3 { str += str3 }
//        if let str4 = p.str4 { str += str4 }
//        label.text = str
        
//G: 12.7mm
//        guard let p = person,let str1 = p.str1,let str2 = p.str2,let str3 = p.str4,let str4 = p.str4 else {
//            return
//        }
//        let str: String = str1 + str2 + str3 + str4
//        label.text = str
    }

通过找不同可以发现,swift的类型推断很耗时! 写法A和写法F相差600倍,极端情况G 相差1880倍 所以说尽量避免类型推断

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读