猿问

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

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


陪伴而非守候
浏览 162回答 2
2回答

撒科打诨

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

一只名叫tom的猫

好吧,首先是个坏消息,接口的速度和现在一样快,可能会改进 1.7,但不会太多。如果你的接口不是很大,你可以传递 funcs 而不是接口。例子:func Sort(a sort.Interface) // can be rewritten asfunc Sort(ln int, lessFn func(i, j) bool, swapFn func(i, j))但我 100% 同意@RobNapier。
随时随地看视频慕课网APP

相关分类

Go
我要回答