大佬教程收集整理的这篇文章主要介绍了Swift语法对编译速度的影响,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Swift初期会惊艳于它强大的表达力,发现原来很啰嗦的逻辑可以用一两句话写完时,工具的强大导致自己会情不自禁的写一些“聪明”的代码。但是Swift毕竟是一个婴儿时期的语言,编译器对于这些极简的代码的处理能力是一个容易被忽略的副作用。
在混编Swift两年后,工程的编译速度到了忍无可忍的程度。通过网上搜寻“如何提高Xcode编译速度”把能做的优化都做了之后,还是没有得到根本的提升。直到发现了这篇文章Regarding Swift build time optimizations,它采用了一个开源工具来检测每一个Swift方法的编译时间,从而定位耗时。我通过对耗时语法的修改,成功的把一个超过4年多庞大工程的编译速度缩短了30%。
下面介绍一下这次优化中遇到的有坑的语法:
??
(Nil Coalescing Operator),随元素个数耗时成指数式增长var a: String? var b: String? var c: String? var d: String? var e: String? var f: String? var g: String? let _ = [ "a": a ?? "",// 1 ms "b": b ?? "",// 3 ms "c": c ?? "",// 11 ms "d": d ?? "",// 48 ms "e": e ?? "",// 274 ms "f": f ?? "",// 1339 ms "g": g ?? "",// 6550 ms ]
解决方案:用传统的键值对赋值
var Dict = [String: String]() Dict["a"] = a ?? "" // 30 ms Dict["b"] = b ?? "" // 27 ms Dict["c"] = c ?? "" // 25 ms Dict["d"] = d ?? "" // 27 ms Dict["e"] = e ?? "" // 26 ms Dict["f"] = f ?? "" // 26 ms Dict["g"] = g ?? "" // 28 ms
let a = min(1,2.0) a + 1 + 2 + 3 + 4 // 11 ms
var a: String? let _ = (a ?? "") + "1" // 27 ms + "2" // 101 ms + "3" // 1043 ms + "4" // 编译超时
解决方案:采用 \()
(String Interpolation)
let _ = "\(a ?? "")1234" // 73 ms
在user-defined里添加SWIFT_WHOLE_MODULE_OPTIMIZATION = YES
可以在debug选择Onone的前提下@L_607_20@
以上是大佬教程为你收集整理的Swift语法对编译速度的影响全部内容,希望文章能够帮你解决Swift语法对编译速度的影响所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。