一、 实验目的
计算机系统的性能指标体现于时间和空间两个方面,在系统上程序实际运行的时间应该是衡量机器时间(速度)性能是最可靠的标准。通过本实验可以帮助学生加深对计算机性能评测问题的理解,掌握利用时间衡量某种系统结构某种算法的方法。
二、 实验环境
开发工具使用windows平台下的vc++6.0。
三、 预习要求
学生做实验前,需要理解计算机评测的概念、掌握利用时间衡量某种系统结构某种算法的方法。
四、 实验内容
- 利用随机函数产生出两个随机矩阵,计算两个矩阵相乘。在此过程中,记录下两个矩阵相乘之前之后的两个系统时间,求出时间差。绘制出矩阵维数和时间的坐标图。
- 访问网站www.spec.org和www.tpc.org,了解专业的测试方式和测试报告。注意此网站提供的测试程序和数据均是针对服务器和机架式计算机的。
- 运行PC机测试软件测试实验室计算机的硬件参数和性能(侧重中央处理器)。
五、 参考算法
一、整个实验过程的思路可以整理如下:
- 定义和初始化数组的结构体。
- 利用标准库的随机函数产生数据所需的随机数。
- 记录系统时间。
- 计算两个矩阵乘法。
- 记录系统时间,与矩阵乘法之前记录的系统时间对比,得出矩阵相乘所耗费的系统时间。
二、在实验过程中需要注意以下几点:
- 矩阵所需的随机数要采用整数,控制在一个合适的范围内。
- 如果矩阵的维数选择太小,时间差值太小。
- 可以将实验改为计算随机矩阵的整数次幂。
六、 思考题
除了编写算法程序测量计算机性能外,还有什么其它的方法来评测计算机的性能?
七、 实验报告要求
具体内容包含以下几项:实验题目、实验目的、实验环境、实验内容与完成情况(要求附上自主设计的源程序)、实验中出现的问题、对问题的解决方案、完成思考题、实验总结等。
源代码:
#include<iostream>
#include<cstdlib>
#include<time.h>
using namespace std;
int a[10005][10005],b[10005][10005];
int main(int argc, char* argv[])
{
int i,j,k;
int ra,ca,cb,rb;
cin>>ra>>ca;
srand(unsigned(time(0)));
for(i=0;i<ra;i++)
{
for(j=0;j<ca;j++)
{
k=rand()%100;
cout<<k<<" ";
a[i][j]=k;
}
cout<<endl;
}
cin>>rb>>cb;
for(i=0;i<rb;i++)
{
for(j=0;j<cb;j++)
{
k=rand()%100;
cout<<k<<" ";
b[i][j]=k;
}
cout<<endl;
}
time_t now;
time(&now);
cout<<"现在时间为:"<<ctime(&now)<<endl;
if(ca!=rb) cout<<"矩阵不可乘!"<<endl;
else
{
cout<<"矩阵乘积为:"<<endl;
for(i=0;i<ra;i++)
{
for(j=0;j<cb;j++)
{
int sum=a[i][0]*b[0][j];
for(int d=1;d<ca;d++)
{
sum+=a[i][d]*b[d][j];
}
cout<<sum<<" ";
}
cout<<endl;
}
time_t now;
time(&now);
cout<<"现在时间为:"<<ctime(&now)<<endl;
}
return 0;
}