gpt4 book ai didi

c - 在c : do internal states improve speed?中

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

假设我有一个带有两个参数的函数,该函数被重复调用。当您使用带参数的函数时,它会增加内存使用量吗?

为每个重复情况生成一个函数并在不带参数的情况下调用该函数会更快吗?

我相信这有时被称为“内部状态”,但我的问题是这两个选项中哪一个执行得更快?

编辑>>>>>>>>你们的回答都很有启发性,让我一下子澄清一下。

这似乎合乎逻辑

x = x + 10

会比以下更快:

x = x + y

我不是在谈论定义和初始化 y 所需的时间,我只是在谈论操作本身。我从逻辑上讲,在第二种情况下,必须有一些额外的步骤,其中CPU必须在执行操作之前找到Y。当你用函数放大它,然后一遍又一遍地相乘时,我认为这会产生显着的差异。

是的,就我而言,它适用于物理,并且可能会感受到速度。

PS 我对编译器功能和辩论学习汇编程序非常感兴趣。

最佳答案

参数通常在堆栈上传递,因此它们不会占用更多内存。参数可能会“不明显”变慢,因为这些值可能会被复制到堆栈(取决于编译器的优化程度)。

编译器比你聪明得多,所以不要试图比编译器聪明。编写清晰的代码,让编译器担心性能。

回复:您的编辑

“这取决于”

  • 您的处理器是否有不同的指令来将 10 加到变量上?
  • 它支持什么类型的寻址模式?

无论上述答案如何,编译器是否都利用了处理器的所有功能,这可能会榨干每一滴性能。例如- 老式的 68000 芯片有一个“INC”操作码,可以将寄存器加 1。它比其他方法快得多。如果您手动滚动汇编,执行 x = x + 10 的最快方法可能是调用 INC 10 次...

我曾经使用过时间有限的实时嵌入式应用程序,并且从未担心过这种级别的优化。如果/当它成为问题时,我会编写代码并担心性能。

关于c - 在c : do internal states improve speed?中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25517607/

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