【发布时间】:2015-02-19 14:17:34
【问题描述】:
这是一个非常简单的问题,但不幸的是,我被卡住了,不知道该怎么办。我的程序是一个简单的程序,它不断接受 3 个数字并输出 3 个中最大的一个。程序一直运行,直到用户输入一个字符。
正如标题所说,我的问题是如何让这个执行得更快(会有大量的输入数据)。任何可能包括使用不同算法或使用不同函数或更改整个代码的帮助都是可接受的。
我在 C++ 标准方面不是很有经验,因此不了解不同库中可用的所有不同功能,所以请说明你的原因,如果你太忙,至少尝试提供一个链接.
这是我的代码
#include<stdio.h>
int main()
{
int a,b,c;
while(scanf("%d %d %d",&a,&b,&c))
{
if(a>=b && a>=c)
printf("%d\n",a);
else if(b>=a && b>=c)
printf("%d\n",b);
else
printf("%d\n",c);
}
return 0;
}
它的工作非常简单。 while 循环将继续执行,直到用户输入一个字符。正如我之前解释过的,该程序接受 3 个数字并输出最大的数字。此代码没有其他部分,仅此而已。我已经尽力解释它了。如果您需要我的更多信息,请询问,(我会尽可能多地尝试)。
我正在使用CPP 4.9.2的互联网平台上编译(那里是这么说的)
我们将不胜感激任何形式的帮助。提前致谢
编辑
输入是由计算机完成的,所以输入没有延迟。
另外,我会接受 c 和 c++ 的答案。
更新
我还想问是否有任何通用库函数或算法,或任何其他类型的建议(某些我们必须做的事情和我们不能做的事情)可以遵循以加快执行速度(不仅仅是为了这段代码,但一般来说)。任何帮助,将不胜感激。 (很抱歉在没有提供任何参考资料的情况下提出如此尴尬的问题)
【问题讨论】:
-
首先我会看看它是否需要更快。它可能已经足够快了。
-
IO 是你的开销。如果您想要性能,请避免使用“标准库”。
-
为什么 foobar 这个问题的投票率如此之低?这是合理的,你可以从这样的任务中学到很多东西......
-
@ArunA.S - 尝试缓冲输入和输出。在从内存中处理文件之前读取更大的文件块,在
printf之前输出到内存。在这两种情况下,专注于少做更多的工作。