gpt4 book ai didi

c++ - 如何加快程序执行速度

转载 作者:太空狗 更新时间:2023-10-29 20:12:17 24 4
gpt4 key购买 nike

这是一个非常简单的问题,但不幸的是,我卡住了,不知道该怎么做。我的程序是一个简单的程序,不断接受 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 在 internet 平台上编译(那边是这么说的)

我们将不胜感激任何形式的帮助。提前致谢

编辑

输入由电脑完成,输入没有延迟。

另外,我会接受 c 和 c++ 的答案。

更新

我还想问一下是否有任何通用的库函数或算法,或任何其他类型的建议(我们必须做的某些事情和我们不能做的事情)可以遵循以加快执行速度(不仅仅是为了这段代码,但一般来说)。任何帮助,将不胜感激。 (很抱歉在没有提供任何引用资料的情况下提出如此尴尬的问题)

最佳答案

你的“算法”非常简单,我会使用 max() 函数来编写它,因为它是更好的风格。

但是无论如何...

花费最多时间的是scanf。这是你的瓶颈。您应该编写自己的读取函数,该函数使用 fread 读取一个巨大的 block 并对其进行处理。您可以考虑异步执行此操作 - 但我不建议将此作为第一步(某些异步实现确实比同步实现慢)。

所以基本上您执行以下操作:

  1. 从文件中读取一个巨大的 block 到内存中(这是磁盘 IO,所以这是瓶颈)
  2. 解析该 block 并找到您的三个整数(注意 block 边界!前两个整数可能位于一个 block 内,第三个位于下一个 - 或者 block 边界在中间分割您的整数,所以让您的解析器只是捕捉那些东西)
  3. 做你的比较 - 与磁盘 IO 相比,它运行得非常糟糕,所以不需要改进

关于c++ - 如何加快程序执行速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28608667/

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