有一天,我在网上看到有人说重载 max()
函数是一种有用的卡常技巧,今天就来测一下重载 max()
到底是有用还是帮了倒忙。
正文
1.代码
直接放代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include<bits/stdc++.h> #include<cmath> using namespace std; #define re register typedef long long LL;
LL numof = 100000000;
inline int Max(int a, int b) { return a > b ? a : b; }
int main() { printf("Time to do %lld is ", numof) ; clock_t emptystart = clock(); for (re LL i = 0; i < numof; ++i) { } clock_t emptyend = clock(); clock_t teststart = clock(); for (re LL i = 0; i < numof; ++i) { max(13, 12); } clock_t testend = clock(); printf("%.6lf\n", (double) ((testend - teststart) - (emptyend - emptystart)) / CLOCKS_PER_SEC); }
|
2.讲解
-
如果 numof
设得比较大最好加上 emptystart
和 emptyend
来排除循环本身的耗时。
1 2 3
| printf("%.6lf\n", (double) ((testend - teststart) - (emptyend - emptystart)) / CLOCKS_PER_SEC);
|
很简单。
3.结果
- C 自带的
max
:
- 自制的
Max
:
是有优化的,但效果并不明显 . . .