我的电脑4核,频率2.5Ghz,一秒钟可以计算100亿次,但是cpu同时要执行计算机上各种进程任务,所以十几次才能完成一次运算;
结果如下:
- O(n)复杂度的时候,一秒大概4亿次;
- O(n*n)复杂度,一秒20000次
- O(n*logn)复杂度,比O(n)小一个数量级;
#include<iostream>
#include<chrono>
#include<thread>
using namespace std;
using namespace chrono;
void fun1(long long n)
{
long long k=0;
for (long long i = 0; i < n; i++)
{
k++;
}
}
void fun2(long long n)
{
long long k=0;
for (long long i = 0; i < n; i++)
for(long long j=0;j<n;j++)
{
k++;
}
}
void fun3(long long n)
{
long long k=0;
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 (1)
{
cout << "please input n:";
cin >> n;
milliseconds start_time = duration_cast<milliseconds>(system_clock::now().time_since_epoch());
fun3(n);
milliseconds end_time = duration_cast<milliseconds>(system_clock::now().time_since_epoch());
cout << "use time: " << milliseconds(end_time).count() - milliseconds(start_time).count() << "ms" << endl;
}
}