栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

测试计算机的运行速度

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

测试计算机的运行速度

计算机的运行速度主要取决于CPU的频率,一般CPU的频率标注为**GHz,例如2.5GHz,在计算机中1Hz代表计算机的CPU在单位时间内运行一次。

 

频率的换算关系为1GHz=1000MHz;1MHz=一百万Hz=10^6Hz;

本计算机的频率为2.5GHz,用换算公式后得到的结果就是25亿Hz,但是CPU的过程并不是完成一次加法就是运算一次,CPU内部有各种线程,可能要运行十几次才能完成一次加法;可以编写程序测试一下计算机的运行速度,在以下的案例中,分别编写时间复杂度为O(n)、O(n^2)、O(n*logn)的程序

#include
#include
#include
using namespace std;
using namespace chrono;

//测试时间复杂度为O(n)的程序
void fun1(long long n){
	long long k = 1;
	for (long long j = 0; j < n; ++j){
		k++;
	}
}

//测试时间复杂度为O(n^2)的程序
void fun2(long long n){
	long long k = 1;
	for (long long i = 0; i < n; ++i) {
		for (long long j = 0; j < n; ++j) {
			k++;
		}
	}
}

//测试时间复杂度为O(n*logn)的程序
void fun3(long long n) {
	long long k = 1;
	for (long long i = 0; i < n; ++i) {
		for (long long j = 1; j < n; j = j * 2) {
			k++;
		}
	}
}

int main()
{
	long long n;    //输入数据的规模
	while (true) {
		cout << "输入:";
		cin >> n;
		milliseconds start_time = duration_cast(system_clock::now().time_since_epoch());
		fun1(n);
		milliseconds end_time = duration_cast(system_clock::now().time_since_epoch());
		cout << "耗时:" << milliseconds(end_time).count() - milliseconds(start_time).count() << "ms" << endl;
	}
}

解释以下,为什么fun3的时间复杂度是O(n*logn),外层循环n次、内层循环log2(n)。

O(n)的时间复杂度

也就是说计算五千万个数量级,耗费时间为136ms(这里计算的是1累加到5千万);

可以推理,对于O(n^2)的时间复杂度,能计算的数量级要在O(n)的基础上开根号,

 

 显然可以得出结论,时间复杂度越低,计算相同数量级数据耗时越少

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/699586.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号