对于时间的函数 gettimeofday 函数使用方法:http://blog.csdn.net/hurmishine/article/details/60326345
矩阵乘法测试:
代码:
/**
1.为了试验简单,两个测试矩阵均为n*n;
当然结果也为n*n的矩阵,
2.为了使结果不超int,原矩阵元素均为0-9的随机数
也输出了结果的前10行10列
3.为了调试简单,用了do while循环省去不断运行的麻烦
按回车等键可继续测试,输入'0'则停止程序
*/
#include <stdio.h>
#include <time.h>//计算时间
#include <string.h>
#include <sys/time.h>//gettimeofday
#include <stdlib.h>//Linux下面要加这句!
#define maxn 2000
int a[maxn][maxn];
int b[maxn][maxn];
int c[maxn][maxn];
//初始化矩阵,每个元素均为0-10的随机数
void Init(int n,int a[][n])
{
int i,j;
srand(time(NULL));//随机种子
for(i=0; i<n; i++)
for(j=0; j<n; j++)
a[i][j]= rand()%10;
}
//输出矩阵信息
void Print(int n,int a[][n])
{
int i,j;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%d\t",a[i][j]);
printf("\n");
}
printf("\n");
}
int main()
{
char ch;
//为了方便测试用了do while 循环,
//输入0 停止
do
{
Init(maxn,a);//初始化矩阵
Init(maxn,b);
//Print(maxn/100,a);
//Print(maxn/100,b);
int i,j,k;
memset(c,0,sizeof(c));//初始化结果矩阵
time_t tt0=clock();
//clock()计算的是CPU执行耗时
//这个函数返回从"开启这个程序进程"到"程序中调用clock()函数"
//时之间的CPU时钟计时单元(clock tick)数,
//在MSDN中称之为挂钟时间(wal-clock)。
//------------------
struct timeval tim;
gettimeofday(&tim,NULL);
double t1 = tim.tv_sec +(tim.tv_usec / 1000000.0);
for(i=0; i<maxn; i++)
{
for(j=0; j<maxn; j++)
{
for(k=0; k<maxn; k++)
c[i][j]+=a[i][k]*b[k][j];
}
}
time_t tt1=clock();
gettimeofday(&tim,NULL);
//注意强制类型转换
printf("CPU 时间:%.6lf seconds\n",(double)(tt1-tt0)/CLOCKS_PER_SEC);
double t2=tim.tv_sec+(tim.tv_usec/1000000.0);
printf("实际时间:%.6lf seconds \n", t2-t1);
//为防止结果溢出,输出结果钱10行10列
Print(10,c);
printf("按'0'结束,其余键继续。。。");
ch=getchar();
system("cls");
}
while(ch!='0');
return 0;
}
样例输出:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)