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