计算 c++ 中的执行时间
我写了一个C++程序,我想知道如何计算执行时间,这样我就不会超过时间限制。
#include<iostream>
using namespace std;
int main ()
{
int st[10000],d[10000],p[10000],n,k,km,r,t,ym[10000];
k=0;
km=0;
r=0;
scanf("%d",&t);
for(int y=0;y<t;y++)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
cin>>st[i] >>d[i] >>p[i];
}
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if((d[i]+st[i])<=st[j])
{
k=p[i]+p[j];
}
if(k>km)
km=k;
}
if(km>r)
r=km;
}
ym[y]=r;
}
for( int i=0;i<t;i++)
{
cout<<ym[i]<<endl;
}
//system("pause");
return 0;
}
这是我的程序,我希望它在 3 秒的时间限制内! 怎么做 ? 是的,抱歉,我的意思是执行时间!
I have written a c++ program , I want to know how to calculate the time taken for execution so I won't exceed the time limit.
#include<iostream>
using namespace std;
int main ()
{
int st[10000],d[10000],p[10000],n,k,km,r,t,ym[10000];
k=0;
km=0;
r=0;
scanf("%d",&t);
for(int y=0;y<t;y++)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
cin>>st[i] >>d[i] >>p[i];
}
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if((d[i]+st[i])<=st[j])
{
k=p[i]+p[j];
}
if(k>km)
km=k;
}
if(km>r)
r=km;
}
ym[y]=r;
}
for( int i=0;i<t;i++)
{
cout<<ym[i]<<endl;
}
//system("pause");
return 0;
}
this is my program and i want it to be within time limit 3 sec !! how to do it ?
yeah sorry i meant execution time !!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
如果您安装了 cygwin,则从它的 bash shell 运行您的可执行文件,例如
MyProgram
,使用time
实用程序,如下所示:这将报告您的程序执行了多长时间take - 输出将如下所示:
您还可以手动修改 C 程序以使用
clock()
库函数对其进行检测,如下所示:If you have cygwin installed, from it's bash shell, run your executable, say
MyProgram
, using thetime
utility, like so:This will report how long the execution of your program took -- the output would look something like the following:
You could also manually modify your C program to instrument it using the
clock()
library function, like so:使用 C++11 来测量一段代码的执行时间,我们可以使用 now() 函数:
如果你想打印上面代码中 start 和 end 之间的时间差,你可以使用:
如果你愿意使用纳秒,您将使用:
diff 变量的值也可以截断为整数值,例如,如果您希望结果表示为:
有关更多信息,请单击 此处
With C++11 for measuring the execution time of a piece of code, we can use the now() function:
If you want to print the time difference between start and end in the above code, you could use:
If you prefer to use nanoseconds, you will use:
The value of the diff variable can be also truncated to an integer value, for example, if you want the result expressed as:
For more info click here
概述
我使用
@AshutoshMehra
响应为此编写了一个简单的语义黑客。 这样你的代码看起来真的很可读!宏
使用
输出
OVERVIEW
I have written a simple semantic hack for this using
@AshutoshMehra
response. You code looks really readable this way!MACRO
USAGE
OUTPUT
注意:问题本来是关于编译时间的,但后来发现OP实际上意味着执行时间。 但也许这个答案对某人仍然有用。
对于 Visual Studio:转到
工具/选项/项目和解决方案/VC++ 项目设置
并将构建计时
选项设置为“yes
”。 之后,每次构建的时间将显示在“输出”窗口中。Note: the question was originally about compilation time, but later it turned out that the OP really meant execution time. But maybe this answer will still be useful for someone.
For Visual Studio: go to
Tools / Options / Projects and Solutions / VC++ Project Settings
and setBuild Timing
option to 'yes
'. After that the time of every build will be displayed in the Output window.您可以尝试以下 C++ 代码:
You can try below code for c++:
这看起来像 Dijstra 算法。 无论如何,运行所花费的时间将取决于 N。如果花费超过 3 秒,我就没有任何方法可以加快它的速度,因为它正在执行的所有计算都需要完成。
根据您要解决的问题,可能有更快的算法。
This looks like Dijstra's algorithm. In any case, the time taken to run will depend on N. If it takes more than 3 seconds there isn't any way I can see of speeding it up, as all the calculations that it is doing need to be done.
Depending on what problem you're trying to solve, there might be a faster algorithm.
我已经使用了上面所说的技术,但我仍然发现Code:Blocks IDE中给出的时间与获得的结果或多或少相似 - (可能会相差一点微秒)。 。
I have used the technique said above, still I found that the time given in the Code:Blocks IDE was more or less similar to the result obtained-(may be it will differ by little micro seconds)..
如果您使用的是 C++,那么您应该尝试下面的代码,因为如果您直接使用 @Ashutosh Mehra 的答案,您总是会得到 0 作为答案。
因为在 C++ 中,float 和 double 值将直接四舍五入。 因此,我使用
cout. precision(10)
将任何值的输出精度设置为小数点后 10 位。If you are using C++ then you should try this below code as you would always get 0 as answer if you directly use @Ashutosh Mehra's answer.
Because in C++ you the float and double values will directly be rounded off. So I used the
cout.precision(10)
to set the output precision of any value to 10 digits after decimal.Ashutosh Mehra 的答案的简短版本:
shorter version of Ashutosh Mehra's answer: