我正在开发一个模拟器,每个指令都很重要。我们被 Go 吸引是因为接口抽象,但从基准测试来看,调用接口的间接调用比直接调用方法要差 5 倍。然而,我们的项目结构现在依赖于使用接口来绕过循环依赖。有没有办法让接口更快(可疑)或绕过没有接口的循环依赖?
2 回答

撒科打诨
TA贡献1934条经验 获得超2个赞
如果您看到循环依赖,则表明您的代码位于不同的模块中。将所有代码移动到一个模块中。那么你不应该需要一个接口。在 Go 中,模块通常是相当大的分组。不要仅仅为了代码组织而创建它们。

一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
好吧,首先是个坏消息,接口的速度和现在一样快,可能会改进 1.7,但不会太多。
如果你的接口不是很大,你可以传递 funcs 而不是接口。
例子:
func Sort(a sort.Interface) // can be rewritten as
func Sort(ln int, lessFn func(i, j) bool, swapFn func(i, j))
但我 100% 同意@RobNapier。
- 2 回答
- 0 关注
- 161 浏览
添加回答
举报
0/150
提交
取消