Swift有三种函数派发方式,总结一下
静态派发是三种派发方式中最快的。CPU直接拿到函数地址并进行调用。编译器优化时,也常常将函数进行内联,将其转换为静态派发方式,提升执行速度。
C++默认使用静态派发;在Swift中给函数加上final关键字,也会变成静态派发。
优点:
使用最少的指令集,办最快的事情。
缺点:
静态派发最大的弊病就是没有动态性,不支持继承。
编译型语言中最常见的派发方式,既保证了动态性也兼顾了执行效率。
函数所在的类会维护一个“函数表”(虚函数表),存取了每个函数实现的指针。
每个类的 V-Table 在编译时就会被构建,所以与静态派发相比多出了两个读取的工作:
优点: