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

在使用接口时,如何从 Go 中获得最大性能?

在使用接口时,如何从 Go 中获得最大性能?

Go
陪伴而非守候 2021-12-20 15:42:07
我正在开发一个模拟器,每个指令都很重要。我们被 Go 吸引是因为接口抽象,但从基准测试来看,调用接口的间接调用比直接调用方法要差 5 倍。然而,我们的项目结构现在依赖于使用接口来绕过循环依赖。有没有办法让接口更快(可疑)或绕过没有接口的循环依赖?
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

如果您看到循环依赖,则表明您的代码位于不同的模块中。将所有代码移动到一个模块中。那么你不应该需要一个接口。在 Go 中,模块通常是相当大的分组。不要仅仅为了代码组织而创建它们。


查看完整回答
反对 回复 2021-12-20
?
一只名叫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。


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号