gpt4 book ai didi

c - 如果函数接受大量参数或单个结构,性能方面是否存在差异?

转载 作者:行者123 更新时间:2023-11-30 15:21:39 25 4
gpt4 key购买 nike

如果函数接受大量参数或单个结构,那么性能方面的主要区别是什么(编译器优化,例如内联、L2 未命中)?

示例(在 Visual Studio 中的一些 C 代码中使用)

void OnMessage(const char * senderId, const int & senderIdLength, const char * topic, const int & topicLength, const void * data, const int & dataLength);

最佳答案

每个参数都需要存储在某个地方(通常在堆栈上,或在进程寄存器中)。这些商店中的每一个都需要一定的时间。然后是按值传递变量所需的差异。如果您有一个大小为 100 字节的结构,并且通过引用传递该结构,则只需传递地址(通常为 4 或 8 字节)。如果按值传递,则必须复制 100 个字节(到堆栈)。编译器尝试尽可能优化堆栈和寄存器的使用。随着时间的推移,L2 未命中受内存地址引用频率的影响最大。如果您的函数很重要,您可能会在其中花费比调用它更多的时间(缓存使用情况很大程度上取决于函数的功能)。如果它很简单,那么编译器可能会很好地符合它。

关于c - 如果函数接受大量参数或单个结构,性能方面是否存在差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29525818/

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