如何查找程序完成的速度?

时间:2016-04-15 10:01:13

标签: c++ windows

所以我制作了一个用DDA算法绘制一条线的c ++程序,我希望fins程序完成多长时间,但似乎我输出的时钟函数无法打印出来

#include <iostream>
#include <graphics.h>
#include <conio.h>
#include <time.h>

using namespace std;

int opt, x1 = 50, y1 =50, x2 = 50, y2=200;
int xt, yt;
int dx;
int dy;
int i;
int j;
int up;

int gd = DETECT, gm;

int main()
{
    clock_t exe, exe2;
    exe = clock();

    dx=(x2-x1);
    dy=(y2-y1);

    if(dx > dy)
        up=dx;
    else
        up=dy;

    float xi=(x2-x1)/up;
    float yi=(y2-y1)/up;

    int x=x1;
    int y=y1;
    int xt=x1;
    int yt=y1;

    initgraph(&gd, &gm, "C:\\TC\\BGI");

    putpixel(x,y, 15);

    for(j=1;j<=500;j++)
    {
        for(i=1;i<=up;i++)
        {

            x += xi;
            y += yi;
            putpixel(abs(x),abs(y), 15);

        }
        x = xt;
        y=yt;
    }
    getch();
    closegraph();
    exe2 = clock();
    float diff = ((float)exe2 - (float)exe);
    cout << "The time: " << diff << endl;
    system("pause");
    return 0;
}

该行显示在图形窗口中,但在关闭图形窗口后,程序停止而不显示diff的结果

3 个答案:

答案 0 :(得分:0)

尝试以下方式。
如果执行没有在system("pause");暂停,请尝试从键盘上读取内容,例如cin >> x。   

#include <time.h>
#include <stdio.h>

time_t start,end;
time (&start);
.
.
.
<your code>
.
.
.
time (&end);
double dif = difftime (end,start);
printf ("Elasped time is %.2lf.", dif );

答案 1 :(得分:0)

有很多方法可以实现(分析)。 但似乎你想要一个基本的方法:

std::cerr << "Diff : " << diff << std::endl;

我不确定因为我不在Window上,但我认为所有cerr消息都将保留在Visual Studio控制台中。

保持跟踪GUI应用程序的一种更通用的方法是日志系统。 以最简单的形式:将您想要的内容写入日志文件(文本文件)。但是对于整个应用程序时间,您将有一些额外的时间来打开文件。

PS:如果有一天你试图对一个复杂的程序进行一些分析:wiki

答案 2 :(得分:0)

或者您可以将stdout输出定向到文件:

freopen("myfile.log", "w", stdout);

使用分析器还可以确定程序的速度。