登录
首页 >  Golang >  Go问答

库的调用与直接操作有差异吗?

来源:stackoverflow

时间:2024-03-08 20:33:26 310浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《库的调用与直接操作有差异吗?》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

不确定我的措辞是否正确,但要点是:

调用 math.Pow(x, 2) 是否更有效,或者我应该使用 x*x 吗?

我已经尝试过它们,但不幸的是,我无法检测到我的测试文件中可能存在的微秒差异。


正确答案


通常函数调用需要一些额外的时间(例如,传递参数并将其返回到函数或从函数返回)。但对于简单的情况,Go 可以进行一些优化,例如内联。 正如文档CompilerOptimizations中所述,有几个条件:

仅内联简短的函数。要内联函数必须符合以下规则:

  • 功能要足够简单,AST节点数量必须小于预算(80);
  • 函数不包含诸如闭包、延迟、恢复、选择等复杂的内容;
  • 函数没有前缀 go:noinline; 函数没有以 go:uintptrescapes 为前缀,
  • 因为转义信息在内联期间会丢失;
  • 函数有主体; 等等
  • GC:1.0+
  • gccgo:-O1 及以上。

简单地使用 x * x 比调用该函数更快。这是因为您的处理器可以直接处理您的数据。如果您调用该函数,则需要更多步骤来处理该指令。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>