2KB项目,专业的源码交易网站 帮助 收藏 每日签到

滚回家吧 Swift 编译器,你喝多了!

  • 时间:2019-01-23 18:29 编辑:2KB 来源:2KB.COM 阅读:341
  • 扫一扫,手机访问
  • 分享
摘要:
Swift 英文原文:Go Home Swift Compiler, You’re Drunk

Swift马上就要迎接它的两周年纪念日了。到目前为止,它一直被大量地使用着并且随着开发者从Objective-C不断过渡到Swift,它的使用一直保持着持续增长。作为一个编程语言,Swift非常棒。使用它有非常有成效的感受,并且Swift有着很多现代编程语言的优良特性。

在经历了一些改变之后,Swift语言和它的平台似乎开始变得稳定了(忽略一些Swift 3的警告)。在这个角度上看,Swift语言的开发体验似乎应该变得越来越顺利,就好像平稳地运行在公开的海域上一样,不会横渡任何冰山的迷宫。在多数情况下我认为这个观点是正确的。然而,我仍然撞上了一些冰山。

考虑以下代码

let myCompany = [
   "employees": [
        "employee 1": ["attribute": "value"],
        "employee 2": ["attribute": "value"],
        "employee 3": ["attribute": "value"],
        "employee 4": ["attribute": "value"],
        "employee 5": ["attribute": "value"],
        "employee 6": ["attribute": "value"],
        "employee 7": ["attribute": "value"],
        "employee 8": ["attribute": "value"],
        "employee 9": ["attribute": "value"],
        "employee 10": ["attribute": "value"],
        "employee 11": ["attribute": "value"],
        "employee 12": ["attribute": "value"],
        "employee 13": ["attribute": "value"],
        "employee 14": ["attribute": "value"],
        "employee 15": ["attribute": "value"],
        "employee 16": ["attribute": "value"],
        "employee 17": ["attribute": "value"],
        "employee 18": ["attribute": "value"],
        "employee 19": ["attribute": "value"],
        "employee 20": ["attribute": "value"],
    ]
]

把以上代码复制到XCode中,点击“build”,然后去喝一杯咖啡。然后你得等12个小时再回来。是的,以上字典文字代码 至少 会花费12个小时来编译。编译时间几乎随着每一个增加的employee指数增长。好消息是这个bug在12月的时候就被提交了。坏消息是他还没有被修复……这种奇怪的问题会深深地嵌入你的代码库中并且造成极其糟糕的冗长的编译时间。

我在注意到我们的单元测试花费了一个非常冗长的时间之后发现了这个问题。最终,它变得非常恼人,所以我决定开始调研。我能够把问题缩小到一个单元测试中因为它要花上好几分钟来编译。这个测试并没有做任何奇怪的事情,只是定义了一个JSON结构用来测试我们分析语句(parseing)的能力。在经过了一些对代码的审查,和互联网的搜索之后,我遇到了以上的bug报告。我很好奇,我们究竟还会有多少其他的单元测试或者代码片段会造成这样一个臃肿的编译时间。

注意!Swift是没有办法有效的分析和编译简单的Dictionary/Array文法的!至少在这个问题解决之前,swift是没有办法这么做的,不只是这个问题,也一定要对其它可能的冰山长个心眼。

对于发现这个帖子的后来人,我提供一些运行的参数。我在上述例子中使用的是Swift 2.2和XCode7.3。运行xcrun swift -version之后的结果是这样的:

Apple Swift version 2.2 (swiftlang-703.0.18.1 clang-703.0.29) Target: x86_64-apple-macosx10.9

对于那些有着极大兴趣的人,我会把测试/复现这个bug的项目放到我的Github主页上。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部