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

时间:2016-03-07 17:31:56

标签: go

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

2 个答案:

答案 0 :(得分:5)

如果您看到循环依赖,那表明您将代码放在单独的模块中。将所有代码移动到一个模块中。那你不应该要求一个界面。 Go中的模块通常都是非常大的分组。不要仅为代码组织创建它们。

答案 1 :(得分:2)

嗯,首先是坏消息,接口速度和现在一样快,可能会有一点改进但不会太多。

如果你的接口不是很大,你可以传递func而不是接口。

示例:

func Sort(a sort.Interface) // can be rewritten as
func Sort(ln int, lessFn func(i, j) bool, swapFn func(i, j))

但我100%同意@RobNapier。