C/C++ 执行时间的显示问题,为什么一步步调试的时候可以显示正确的执行时间,直接运行时就显示为0
//time_test.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include<stdio.h>#include<time.h>#i...
// time_test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 10
void generate_array(int a[],int size)
{
for(int i=0;i<N;i++)
{
a[i]=rand()%10;
}
}
int main()
{
int a[N];
int sum=0;
generate_array(a,N);
clock_t time_start=clock();
clock_t time_end;
for(int i=0;i<N;i++)
sum+=a[i]*a[i];
time_end=clock();
printf("Time:%d\n",time_end-time_start);
return 0;
}
一步步调试
直接执行 展开
//
#include "stdafx.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 10
void generate_array(int a[],int size)
{
for(int i=0;i<N;i++)
{
a[i]=rand()%10;
}
}
int main()
{
int a[N];
int sum=0;
generate_array(a,N);
clock_t time_start=clock();
clock_t time_end;
for(int i=0;i<N;i++)
sum+=a[i]*a[i];
time_end=clock();
printf("Time:%d\n",time_end-time_start);
return 0;
}
一步步调试
直接执行 展开
4个回答
展开全部
截取开始时间与结束时间操作间隔太短(CPU处理的速度非常快,所以时间差值几乎为0),你可以在中间加个Sleep(100)就知道了,Sleep函数在windwos.h头文件中.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为时间间隔太短,你这种方法是记不到的,你把N调到很大试试看,或者换种方法调高记录精度
追问
不是这个原因,我调过1000000都不行,我调成10是因为为了一步步的调试,for循环的时候执行的少,而且你10的时候可以看到time_start与time_end值是有差值的,clock()记录的时间单位是ms.
追答
你这N太大时,a数组开不了啊,建议这种数组放到函数外面开全局,给你把函数去掉了简单化,你试试这个
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#define N 10000000
//int a[N];
//void generate_array(int a[],int size)
//{
// for(int i=0;i<N;i++)
// {
// a[i]=rand()%10;
// }
//}
int main()
{
int sum=0;
//generate_array(a,N);
clock_t time_start=clock();
clock_t time_end;
for(int i=0;i<N;i++)
sum++;
time_end=clock();
cout<<time_end - time_start<<endl;
return 0;
}
刚刚又试了下,不动你的函数,我把循环控制和函数大小分开,我本地试是可以的
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#define N 10
#define LEN 10000000
void generate_array(int a[],int size)
{
for(int i=0;i<N;i++)
{
a[i]=rand()%10;
}
}
int main()
{
int a[N];
int sum=0;
generate_array(a,N);
clock_t time_start=clock();
clock_t time_end;
for(int i=0;i<LEN;i++)
sum+=(a[i%N]*a[i%N])%N;
time_end=clock();
cout<<time_end - time_start<<endl;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
运行太快了,加入一些耗时的操作应该就有了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询