如题
- 结构体实现了某一个接口,那后续平凡对该结构体进行断言性能消耗大吗
- 通过接口调用实现该结构体的方法有额外性能消耗吗
网上好像没有什么文章进行说明
如题
网上好像没有什么文章进行说明
首先,网上有文章,go相关的都可以看这个人的文章,写的很好
golang接口动态派发
不想看文章直接看结论
在接口实现为结构体指针的情况下:
~18%
左右的额外性能开销。~5%
,这对应用性能的整体影响就更小了,所以与使用接口带来的好处相比,动态派发的额外开销往往可以忽略在为结构体实现时:
2 回答1.4k 阅读
2 回答1.4k 阅读
2 回答1.3k 阅读
2 回答1.3k 阅读
3 回答882 阅读
2 回答1k 阅读
2 回答1.1k 阅读
简单粗暴的结论:
断言不会消耗多少性能,可以忽略。通过接口调用,不在代码中显示使用断言会有额外的性能消耗,并且消耗较大。
原因:
接口调用的代码无法在编译器确定参数类型,因此编译器无法进行内联优化。详细见:
https://mp.weixin.qq.com/s/1n...