时间开销模型源码
宏M度量操作op所花时间,单位纳秒。
#include "stdafx.h" #include "time.h" #include <iostream> using namespace std; #define trails 5 #define n 10000 #define M(op) \ cout << #op; \ cout << "\t"; \ timesum = 0; \ for(int tr=0;tr<trails;++tr) \ { \ start = clock(); \ for(int i=1;i<=n;++i) \ for(int j=1;j<=n;++j) \ op; \ t = clock() - start; \ cout << t; \ cout << "\t"; \ timesum += t; \ } \ cout << 1e9 * timesum / (n*n*trails * CLOCKS_PER_SEC); \ cout << "\n"; int main() { int k = 0; int timesum = 0; int start = 0; int t = 0; M({}); M(k++); M(k=i+j); M(k=i-j); M(k=i*j); M(k=i/j); M(k=i%j); M(k=i&j); M(k=i|j); M(k=sqrt(i)); return 0; }
Output on my machine: x64. Intel i5-2400 3.1G; 8G Memory.
{} 224 222 222 222 221 622.83 k++ 237 236 237 237 237 663.754 k=i+j 195 194 195 194 194 544.906 k=i-j 195 195 198 197 195 549.391 k=i*j 202 202 202 202 202 566.209 k=i/j 397 397 398 396 396 1112.24 k=i%j 401 397 396 399 396 1115.04 k=i&j 195 194 195 197 194 546.588 k=i|j 194 195 193 195 194 544.345 k=sqrt(i) 3177 3181 3177 3171 3173 8901.81