使用_忽略Swift中的参数时是否有性能提升?

时间:2015-05-08 17:05:56

标签: swift performance

创建UITableViewController时,有时我只需要我的函数中的indexPath,使用_忽略tableView参数时是否有性能提升?

Ex:使用此:

override func tableView(_: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)

而不是:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

1 个答案:

答案 0 :(得分:2)

通常,这属于“微优化”类别。 即使存在差异,也可能是微不足道的 与你的其他程序相比。并且机会很大 编译器注意到未使用的参数并优化代码 因此。您应该决定哪个参数名称最多 感觉你的情况。

在这种特殊情况下,它完全没有任何区别。 如何命名(内部)方法参数仅影响编译 阶段,但不会更改生成的代码。

您可以轻松验证 你自己。创建源文件“main.swift”:

// main.swift
import Swift

func foo(str : String) -> Int {
    return 100
}

func bar(_ : String) -> Int {
    return 100
}

println(foo("a"))
println(bar("b"))

现在编译它并检查生成的汇编代码:

swiftc -O -emit-assembly main.swift

两种方法的汇编代码完全相同:

    .private_extern __TF4main3fooFSSSi
    .globl  __TF4main3fooFSSSi
    .align  4, 0x90
__TF4main3fooFSSSi:
    pushq   %rbp
    movq    %rsp, %rbp
    movq    %rdx, %rdi
    callq   _swift_unknownRelease
    movl    $100, %eax
    popq    %rbp
    retq

    .private_extern __TF4main3barFSSSi
    .globl  __TF4main3barFSSSi
    .align  4, 0x90
__TF4main3barFSSSi:
    pushq   %rbp
    movq    %rsp, %rbp
    movq    %rdx, %rdi
    callq   _swift_unknownRelease
    movl    $100, %eax
    popq    %rbp
    retq