矩阵乘法测试



对于时间的函数 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;
}




样例输出:



版权声明:本文为hurmishine原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。