跳到页脚

优化SWIFT协议

抽象的

Swift是一种越来越受欢迎的编程语言,主张使用协议,其定义了一组所需的方法和属性以符合类型。协议通常用于SWIFT计划,以抽象实施细节;例如,在来自优步的大型工业应用程序中,它们的大量用于使模拟对象能够进行单元测试。不幸的是,沉重的协议可能导致显着的性能开销。超出通常与此类功能相关联的动态调度,SWIFT允许符合值和参考类型来符合协议,从而导致显着的拳击和解压缩开销。

在本文中,我们描述了三种新的优化和转换,以减少SWIFT协议的开销。在一个过程中,我们定义了localvar,dataflow分析和转换,以消除动态调度和拳击架空发货。我们还使用专业化描述了Param,它优化了协议类型的方法参数的情况。最后,我们描述了Soletype,在全局分析(如类型 - 层次分析)发现某些协议变量时注入投射的转换必须具有一些混凝土类型。我们还描述了这些优化如何效果效果效果效果效果,并且具有现有的SWIFT优化来提供进一步的加速。

我们执行精心的实验,并证明我们的优化在使用协议的套件套件时提供了平均1.56倍的加速。此外,我们将优化应用于每天数百万客户使用的优步应用于生产iOS Swift应用程序。对于由应用程序开发人员定义的一组性能跨度,优化版本显示出从6.9%到55.49%的加速。我们的优化版本已被接受为官方SWIFT编译器分发的一部分。

作者

raj barik.,Manu Sriharan,Murali Krishna Ramanathan.Milind Chabbi.

会议

OOPSLA 2019.

全文

'SWIFT协议的优化'(PDF)

编程系统团队

注释