gpt4 book ai didi

c++ - 函数内联——有哪些损害性能的例子?

转载 作者:可可西里 更新时间:2023-11-01 17:09:22 26 4
gpt4 key购买 nike

传统观点认为函数内联并不总是有益,甚至会损害性能:

我理解为什么内联应该有所帮助 - 它通过将被调用函数包含在其调用者中来消除函数调用开销。

我也理解为什么人们声称它会损害性能——内联函数在某些情况下会增加代码大小,最终会增加缓存未命中率甚至触发额外的页面错误。这一切都是有道理的。

不过,我很难找到内联实际上会损害性能的具体示例。当然,如果这个问题足以值得警告,那么某个地方的某个人一定遇到过内联是一个问题的例子。所以,我问...

什么是一个好的、具体的代码示例,其中函数内联实际上会损害性能?

最佳答案

在某些具有大量内联函数的平台上,可以通过导致“远”跳转而不是相对跳转来降低性能。内联也可能导致页面错误,操作系统需要将更多代码拖入内存,而不是执行可能已经存在的代码(作为子例程)。

某些平台可能针对“近代码”优化了跳转指令。这种类型的跳转使用当前位置的有符号偏移量。带符号的偏移量可能会受到限制,例如 127 字节。长跳转需要更大的指令,因为较长的跳转必须包含绝对地址。较长的指令需要更多的时间来执行。

长内联函数可能会扩展可执行文件的长度,因此操作系统需要将新“页面”拖入内存,称为页面交换。页面交换会减慢应用程序的执行速度。

这些是内联代码会降低性能的“可能”原因。真正的真相是通过剖析获得的。

关于c++ - 函数内联——有哪些损害性能的例子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5808498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com