为了账号安全,请及时绑定邮箱和手机立即绑定

Go 中的内联函数

Go 中的内联函数

Go
摇曳的蔷薇 2021-08-23 15:55:23
Go 有一个很好的使用泛型的 introsort 泛型实现sort.Interface。但是 C++ 的优点之一std::sort是您可以指定一个内联的比较函子,并省略不必要的函数调用。我们可以强制当前的本地 Go 编译器以某种方式内联这些sort.Swap和sort.Less调用吗?我不考虑,gccgo因为与本机编译器相比,它给我们带来了可怕的结果。
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

对于 Go 1.x,答案是否定的。

Go 编译器可能会以某些特定方式内联某些平台上的某些类函数。您甚至可以找出一些技巧,通过这些技巧,您可以使当前的编译器内联您的体系结构上的排序“函子”,但是绝对不能保证这将在未来的版本中保持不变,并且它可能对您不利(即使当编译器更改时,破坏您的代码,具体取决于所涉及的黑客级别)。

Go 的主要版本(2.x?)可能会提供一些关于优化的保证;但是对于 Go 1.x 来说,没有这样的东西。即使 Go 的作者想要这样做,也很难为所有平台提供这样的保证(记住 Go 在许多架构上运行)。

更普遍的是,在任何语言中依赖特定于编译器的行为都是一个坏主意。


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 284 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信