测试计算机的运行速度
生活随笔
收集整理的这篇文章主要介绍了
测试计算机的运行速度
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
计算机的运行速度主要取决于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<iostream> #include<chrono> #include<thread> 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<milliseconds>(system_clock::now().time_since_epoch());fun1(n);milliseconds end_time = duration_cast<milliseconds>(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)的基础上开根号,
显然可以得出结论,时间复杂度越低,计算相同数量级数据耗时越少
总结
以上是生活随笔为你收集整理的测试计算机的运行速度的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 什么是SOCKS5代理 它的原理是什么
- 下一篇: 操作rabbitMQ时,误删guest账