gpt4 book ai didi

c - 用 C 语言在标准输出中打印新行的最快方法?

转载 作者:行者123 更新时间:2023-12-04 12:01:06 33 4
gpt4 key购买 nike

所以我在 codechef(编程竞赛平台)上解决问题,这个特定问题有很多 I/O,每个结果都会在控制台上以新行打印。如果不在换行中打印结果,程序执行大约需要 0.3 秒,但换行需要大约 1.3 秒,其中 1 秒是程序执行的限制。

我的问题是是否可以更快地在控制台上打印新行??

我正在使用 putchar_unlocked 并将此自定义函数用于如下指定的输出。编译器是gcc 4.8.1

#define pc(x) putchar_unlocked(x);
inline void writeInt (int n)
{
int N = n, rev, count = 0;
rev = N;
if (N == 0) {
pc('0');
pc('\n');
return;
}
while ((rev % 10) == 0) {
count++;
rev /= 10;
//obtain the count of the number of 0s
}
rev = 0;
while (N != 0) {
rev = (rev<<3) + (rev<<1) + N % 10;
N /= 10;
//store reverse of N in rev
}
while (rev != 0) {
pc(rev % 10 + '0');
rev /= 10;
}
while (count--) pc('0');
pc('\n'); //this line prints new line and the reason for 1 second delay!
}

最佳答案

默认情况下,stdout 是行缓冲的。意味着如果缓冲区中有换行符,系统调用 write 将被调用。

将标准输出缓冲更改为完全缓冲:

setvbuf(stdout, NULL, _IOFBF, 0);

最后刷新你的输出:

fflush(stdout);

关于c - 用 C 语言在标准输出中打印新行的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22990948/

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