gpt4 book ai didi

c - fputs 是否比格式 ("%s"更有效,..)?

转载 作者:太空狗 更新时间:2023-10-29 16:01:30 25 4
gpt4 key购买 nike

在C代码中

printf("%s", message);

我想知道我是否应该使用

fputs(message, stdout);

以前的代码更清晰但是速度更慢吗?或使用更多内存?我更喜欢更清晰的代码,但不喜欢它看起来愚蠢地浪费时间和内存。

我很想知道编译器会检测到这种情况,并且必要的格式解析和解释不会在运行时完成。毕竟,gcc 会提示 printf(""),因此编译器可能会“理解”格式并对其进行预处理。

PS:前者的风格更清晰,在写format("name=%s\n",unameData.nodename);时更明显,而不是fputs(stdout,"name=");fputs(stdout,unameData.nodename);putchar('\n');。这毕竟是格式的目的。

最佳答案

根据实现情况,其中一种可能更有效。

通过适当的优化标志,体面的编译器应该能够在程序员不知情的情况下将效率较低的形式更改为另一种形式(假设 printf("%s\n", message))。

$ cat print.c 
#include <stdio.h>

int main()
{
printf("%s\n", "Hello world");
return 0;
}

$ gcc -S -O2 print.c
$ cat print.s
.file "print.c"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Hello world"
...
movl $.LC0, (%esp)
call puts
xorl %eax, %eax
leave
...

... 表示为简洁省略的代码

关于c - fputs 是否比格式 ("%s"更有效,..)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27704547/

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