首页 > 后端开发 > Golang > 为什么我的 Cgo 代码比预期的 Go 代码慢?

为什么我的 Cgo 代码比预期的 Go 代码慢?

Mary-Kate Olsen
发布: 2024-12-02 09:44:10
原创
329 人浏览过

Why is my Cgo code slower than expected Go code?

为什么 cgo 这么慢?

您的测试代码比较了 C 和 Go 函数各运行 1 亿次的执行时间。 C 函数比 Golang 函数花费更长的时间,您担心您的测试代码有问题。

通过 CGo 调用 C/C 代码的高开销使得 CGo 调用最小化。在提供的示例中,创建 C 循环可能比在循环中重复调用 CGo 函数更有效。

Go 运行时的线程设置可以通过多种方式打破 C 代码的期望:

  1. 相对较小的 goroutine 堆栈
  2. 与 libpthread 的线程本地存储交互不当实现
  3. 干扰 Go 运行时的 UNIX 信号处理程序
  4. 如果 C 代码独占线程,可能会对其他 goroutine 造成损害

因此,CGo 采取运行的安全方法C 代码在具有传统堆栈的单独线程中。

与 Python 等语言不同,需要重写C 中的代码热点对于加速程序来说很常见,而 Go 中 C 和 Go 代码之间的性能差距要小得多。考虑保留 CGo 与现有库的接口,可能使用小型 C 包装函数来减少 Go 所需的调用数量。

以上是为什么我的 Cgo 代码比预期的 Go 代码慢?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板