据我所知,使用cgo
时,每次访问都会受到影响 - > C函数调用。在尝试优化我的程序时,我想知道滞后的位置,以便我可以减少这些事件的发生。所以假设的任意值(因为我没有实际的通话时间)......
如果(开始假设)
|通话类型|时间(任意单位)
| --- | ---
| go->go
| 1
| go-> C | 10
问题,是否:
C->go
= 10
也是如此?
怎么样:
go -> C -> C
?= 20
或〜11
?
go -> C -> C -> go
?=? (等于什么?)
基本上,执行C->go
和C-C
调用会产生与go->C
相同的惩罚,如果是这样,当链接时,此惩罚是否会成倍增加?
那是go->C->C->go
=(3 * go->C
)?
我希望这不是一个任意的问题,我希望别人有同样的需要并经过测试。谢谢!
答案 0 :(得分:0)
基准测试表明go-> C开销很小。每次通话只需几纳秒。因此,如果这就是您的全部工作,那么您应该可以忽略开销。
另一方面,C-> go应该有相当大的开销。按顺序开始一个新的go程序。因此,如果可能的话,最好直接避免这种情况。如果可能的话,只需重写应用程序即可使用go-> C进行检查或获取响应,因此您可以跳过C-> go,而只需执行go-> go。