是否可以创建Swift结构属性的别名而不会增加运行时间?

时间:2020-07-01 19:35:15

标签: swift optimization struct properties alias

这听起来似乎纯粹是装饰性的问题,但是答案可能使我对Swift的优化功能有所了解,而目前我还没有。

有时我希望我可以更改某些Core Graphics最基本结构的属性名称,以与其他CG结构“更好地配合”。例如,CGPoint的属性是.x和.y,这似乎非常合适,而CGSize属性则被阐明:.width和.height。由于绘图代码可以包含CGPoint,CGSize和CGRect引用的一页一页,因此我发现它在视觉上不太夸张-而是更多的“ columnar”-可以将CGPoint的.width和.height缩写为.w和.h。 x和.y。我发现可以通过将CGSize扩展为“别名”其属性来做到这一点:

extension  CGSize
  { 
    init  (w: CGFloat, h: CGFloat)
      { self.init (width: w, height: h) }

    var w: CGFloat    { get      { return self.width }          
                        set (w)  { self.width  = w   } }

    var h: CGFloat    { get      { return self.height  }          
                        set (h)  { self.height = h   } }
     }

这似乎行得通,并且满足了我对编码简洁性的强迫性渴望,但是我想知道这是否是个好主意。我正在通过抽象和不必要的函数调用层推送值。还是我是否有可能知道Swift的运行时优化是否具有攻击性和智能,足以识别出所有这些都可以简化为一种无需向机器代码添加指令的伪别名呢?我也知道,就初始化程序而言,我可以强制将其内联:

    @inline (__always)  init  (w: CGFloat, h: CGFloat)
      { self.init (width: w, height: h) }

但是我还没有找到类似的方法来内联吸气剂和吸气剂。我也不敢肯定,内联不会保证不增加机器代码。我希望绘图代码尽可能地快,所以如果选择速度与我的文学敏感性相结合,那么我将追求速度。还是有其他策略?

0 个答案:

没有答案