为什么 cgo 这么慢?
您的测试代码比较了 C 和 Go 函数各运行 1 亿次的执行时间。 C 函数比 Golang 函数花费更长的时间,您担心您的测试代码有问题。
通过 CGo 调用 C/C 代码的高开销使得 CGo 调用最小化。在提供的示例中,创建 C 循环可能比在循环中重复调用 CGo 函数更有效。
Go 运行时的线程设置可以通过多种方式打破 C 代码的期望:
因此,CGo 采取运行的安全方法C 代码在具有传统堆栈的单独线程中。
与 Python 等语言不同,需要重写C 中的代码热点对于加速程序来说很常见,而 Go 中 C 和 Go 代码之间的性能差距要小得多。考虑保留 CGo 与现有库的接口,可能使用小型 C 包装函数来减少 Go 所需的调用数量。
以上是为什么我的 Cgo 代码比预期的 Go 代码慢?的详细内容。更多信息请关注PHP中文网其他相关文章!