#include <iostream>
using namespace std;
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
long unsigned tsc_low,
tsc_high,
tsc_low1,
tsc_high1;
} TscMeasurement;
#define rdtsc(low,high) \
__asm__ __volatile__("rdtsc" : "=a" (low), "=d" (high))
inline void tsc_start_measurement (TscMeasurement *tm) {
rdtsc (tm->tsc_low, tm->tsc_high);
}
inline void tsc_stop_measurement (TscMeasurement *tm) {
rdtsc (tm->tsc_low1, tm->tsc_high1);
}
inline long long unsigned tsc_get_ticks (const TscMeasurement *tm)
{
long long unsigned tsc, tsc1;
tsc = (long long unsigned) tm->tsc_high << 32 |
((long long unsigned) tm->tsc_low & 0xffffffff);
tsc1 = (long long unsigned) tm->tsc_high1 << 32 |
((long long unsigned) tm->tsc_low1 & 0xffffffff);
return tsc1 - tsc;
}
#ifdef __cplusplus
}
#endif
int main() {
// your code goes here
TscMeasurement ttime;
volatile long long i;
char buf[100];
tsc_start_measurement(&ttime);
for(i=0; i < 10000000UL; i++) {
sprintf(buf, "%d %s%d%f\n", i,"bla-bla-bla", -10, 1.3);
}
tsc_stop_measurement(&ttime);
printf ("Time: %llu\n", tsc_get_ticks(&ttime) );
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKI2VuZGlmCiAKdHlwZWRlZiBzdHJ1Y3QgewoJbG9uZyB1bnNpZ25lZAl0c2NfbG93LAoJCQkJCXRzY19oaWdoLAoJCQkJCXRzY19sb3cxLAoJCQkJCXRzY19oaWdoMTsKfSBUc2NNZWFzdXJlbWVudDsKIAojZGVmaW5lIHJkdHNjKGxvdyxoaWdoKSBcCiAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9YSIgKGxvdyksICI9ZCIgKGhpZ2gpKQogCmlubGluZSB2b2lkIHRzY19zdGFydF9tZWFzdXJlbWVudCAoVHNjTWVhc3VyZW1lbnQgKnRtKSB7CglyZHRzYyAodG0tPnRzY19sb3csIHRtLT50c2NfaGlnaCk7Cn0KIAppbmxpbmUgdm9pZCB0c2Nfc3RvcF9tZWFzdXJlbWVudCAoVHNjTWVhc3VyZW1lbnQgKnRtKSB7CglyZHRzYyAodG0tPnRzY19sb3cxLCB0bS0+dHNjX2hpZ2gxKTsKfQogCmlubGluZSBsb25nIGxvbmcgdW5zaWduZWQgdHNjX2dldF90aWNrcyAoY29uc3QgVHNjTWVhc3VyZW1lbnQgKnRtKQp7Cglsb25nIGxvbmcgdW5zaWduZWQgdHNjLCB0c2MxOwoJdHNjID0gKGxvbmcgbG9uZyB1bnNpZ25lZCkgdG0tPnRzY19oaWdoIDw8IDMyIHwKCQkoKGxvbmcgbG9uZyB1bnNpZ25lZCkgdG0tPnRzY19sb3cgJiAweGZmZmZmZmZmKTsKCXRzYzEgPSAobG9uZyBsb25nIHVuc2lnbmVkKSB0bS0+dHNjX2hpZ2gxIDw8IDMyIHwKCQkoKGxvbmcgbG9uZyB1bnNpZ25lZCkgdG0tPnRzY19sb3cxICYgMHhmZmZmZmZmZik7CglyZXR1cm4gdHNjMSAtIHRzYzsKfQogCiNpZmRlZiBfX2NwbHVzcGx1cwp9CiNlbmRpZgogCmludCBtYWluKCkgewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCVRzY01lYXN1cmVtZW50IHR0aW1lOwoJdm9sYXRpbGUgbG9uZyBsb25nIGk7CgljaGFyIGJ1ZlsxMDBdOwogCgl0c2Nfc3RhcnRfbWVhc3VyZW1lbnQoJnR0aW1lKTsKCWZvcihpPTA7IGkgPCAxMDAwMDAwMFVMOyBpKyspIHsKCQlzcHJpbnRmKGJ1ZiwgIiVkICAgJXMlZCVmXG4iLCBpLCJibGEtYmxhLWJsYSIsIC0xMCwgMS4zKTsKCX0KCXRzY19zdG9wX21lYXN1cmVtZW50KCZ0dGltZSk7CiAKCXByaW50ZiAoIlRpbWU6ICVsbHVcbiIsIHRzY19nZXRfdGlja3MoJnR0aW1lKSApOwogCglyZXR1cm4gMDsKfQ==