输出一个程序的运行时间
注意
- devc++ 5.4.0 中:
clock_t startTime = clock();
定义一个变量 和 给变量赋值 不能在两条语句中分别进行 clock()
函数可以返回自程序开始执行到当前位置为止, 处理器走过的时钟打点数(即 ”ticks” , 可以理解为”处理器时间”)。 每过千分之一秒(即 1 毫秒),clock()
函数的返回值加 1- 可以除以一个常量
CLOCKS_PER_SEC
,把毫秒转换成以秒为单位,且CLOCKS_PER_SEC = 1000
直接除以 1000.0 - 利用两个
clock()
计算代码块的运行时间
整个程序的运行时间:
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> a;
for (int i = 0; i < 10000000; ++i)
{
a.push_back(i);
}
clock_t time = clock();
cout << "执行用时: " << time / 1000.0 << endl;
return 0;
}
代码块的运行时间:
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> a;
clock_t startTime = clock(); // 开始
for (int i = 0; i < 10000000; ++i)
{
a.push_back(i);
}
clock_t endTime = clock(); // 结束
cout << "执行用时: " << (endTime - startTime) / 1000.0 << endl;
return 0;
}
减少程序运行时间的小技巧
避免同一条语句多次计算
1、在for循环的判断条件中使用求容器长度/大小的函数 ——> 提前定义一个变量存放
vector<int> a;
for (int i = 0; i < 100000; ++i)
{
a.push_back(i);
}
for (int i = 0; i < a.size(); ++i)
{
a[i]++;
}
int length = a.size();
for (int i = 0; i < length; ++i)
{
a[i]++;
}
2、复杂的式子多次使用,赋值给变量
if(min(max_right[i],max_left[i]) - height[i] > 0)
ans = ans + min(max_right[i],max_left[i]) - height[i];
可以优化为:
int temp = min(max_right[i],max_left[i]) - height[i];
ans += temp > 0 ? temp : 0;
3、使用位运算
判断奇偶数的时候,使用'&'
更高效
如果a & 1 == 1
则 a 为奇数,a & 1 == 0
则 a 为偶数
l + r >> 1
:除以2