宏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
原文:http://www.cnblogs.com/liquadli/p/3611295.html