使用cgo时;性能开销在哪里/何时?

问题描述 投票:1回答:1

据我所知,当使用cgo时,每次go - > C函数调用都会受到性能影响。在尝试优化我的程序时,我想知道滞后的位置,以便我可以减少这些事件的发生。所以在假设的任意值(因为我没有实际的通话时间)......

如果(开始假设)

|通话类型|时间(任意单位)| --- | --- | go->go | 1 | go-> C | 10

问题,是吗:C->go = 10? 怎么样:

go -> C -> C?= 20或~11

go -> C -> C -> go?=? (等于什么?)

基本上,C->goC-C的召唤与go->C会产生同样的惩罚,如果是这样的话,当链接时,这种惩罚是否会成倍增加? 那是go->C->C->go =(3 * go->C)?

我希望这不是一个过于武断的问题,我希望其他人有同样的需求并经过测试。谢谢!

algorithm cgo
1个回答
0
投票

基准测试说go-> C是非常微不足道的开销。每次通话只需几纳秒。所以如果这就是你所做的,那么你应该能够忽略开销。

C->另一方面应该有相当大的开销。按照开始新的计划的顺序。所以尽可能直接避免这种情况。如果可能的话,只需重写您的应用程序,让go-> C检查事物或获得响应,这样您就可以跳过C-> go而不是go-> go。

© www.soinside.com 2019 - 2024. All rights reserved.