gpt4 book ai didi

C 性能和函数参数的选择

转载 作者:行者123 更新时间:2023-11-30 19:34:32 25 4
gpt4 key购买 nike

我正在制作一个小bignum库作为练习(这是我的第一个小项目,我是新手)。我用的是c语言。我这样定义了一个结构编号:

typedef struct number{
char *mantissa;
long exponent;
enumSign sign;
}number;

(我包含了结构,因为我不知道这里的大小是否重要),以及一些执行基本算术运算的函数。我的问题是:如果我使用它会更有效吗:

数字 do_sum(数字 n, 数字 q)

或者,

void do_sum(number *n, number *q, number *result)

?我尝试记录两种情况下的执行时间(功能几乎相同),但结果并不一致。您能否解释一下这两种情况下会发生什么?

最佳答案

为了找到此类问题的答案,您需要

  • 了解如何在每种情况下查看编译器的汇编输出。所有像样的 C 编译器都可以选择生成汇编输出。如果这样做,您会发现一个版本比另一个版本复杂得多,无论是对于调用者还是被调用者。更复杂的版本是返回struct 的版本。更大的复杂性通常(但并非总是)意味着更差的性能。

  • 使用探查器尝试每种情况,看看哪一种表现更好。剧透:返回 struct 的版本的性能会比接受指向现有 struct 的指针的版本差。

尽管有性能,C 无论如何都很快,所以我建议您在学习编码时不要太关注性能。最重要的性能是算法性能,它与语言无关。各个低级操作的性能几乎没有多大关系。

关于C 性能和函数参数的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43793096/

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