Go 调用C语言,动态链接后的执行速度是静态链接的3倍。好奇怪,求解

发布于 2021-12-01 16:41:29 字数 796 浏览 869 评论 3

Go 调用C语言,动态链接后的执行速度是静态链接的3倍。好奇怪,求解

代码是相同的

RT

各位大牛有可能解惑的吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一笔一画续写前缘 2021-12-03 20:49:09

我不能肯定是否是这种情况。静态链接下,代码相对存储地址之间存在冲突。假设两个函数a,b在调入cache中会在一个区域,而a调用b,且频率高,则在a 调用b,和b返回a时,这个区域都存在从外部存储区再次载入代码的工作,这个是挺满的一项工作。 哈,一般出现这种情况需要在编译时,手工定义段。当然不知道如今的优化编译器是否具备这类检查工作。不过对于函数指针调用函数的方式,我想自动优化是不太可行的。

臻嫒无言 2021-12-03 20:46:58

重新编译了下,速度几乎差不多了

贱贱哒 2021-12-03 20:10:09

猜测:记得编译原理中有讲过,动态库加载的时候,需要映射一些虚拟地址,静态库不用。再加上GO语音调用C语言估计也是映射地址实现的,步骤更繁琐了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文