时间开销模型源码

宏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


 

 

posted @ 2014-03-19 14:15  lqj_piaohong  阅读(135)  评论(0编辑  收藏  举报