#include <ctime>
#include <iostream>
#include <stdlib.h> /* srand, rand */
using namespace std;
class C{
public: int data=0;
};
class B{
public: C* c; int accu=0;
public: B(){
c=new C();
}
public: void doSomething(){
accu+=c->data; //do something about c
}
};
int main() {
using namespace std;
const int NUM=1000000;
B* bs[NUM];
for(int n=0;n<NUM;n++){
bs[n]=new B();
}
for(int loop=0;loop<20;loop++){
double accumulator=0;
for(int n=0;n<NUM;n++){
int iSecret = rand() % NUM;
clock_t begin = clock();
bs[iSecret]->doSomething();
clock_t end = clock();
accumulator+=double(end - begin);
}
double elapsed_secs = accumulator;
std::cout<<elapsed_secs<<std::endl;
}
}
I2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzdGRsaWIuaD4gICAgIC8qIHNyYW5kLCByYW5kICovCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQ3sKICAgIHB1YmxpYzogaW50IGRhdGE9MDsKfTsKY2xhc3MgQnsKICAgIHB1YmxpYzogQyogYzsJaW50IGFjY3U9MDsKICAgIHB1YmxpYzogQigpewogICAgCWM9bmV3IEMoKTsKICAgIH0KICAgIHB1YmxpYzogdm9pZCBkb1NvbWV0aGluZygpewogICAgCWFjY3UrPWMtPmRhdGE7IC8vZG8gc29tZXRoaW5nIGFib3V0IGMKICAgIH0KfTsKaW50IG1haW4oKSB7Cgl1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCWNvbnN0IGludCBOVU09MTAwMDAwMDsKCUIqIGJzW05VTV07Cglmb3IoaW50IG49MDtuPE5VTTtuKyspewoJICAgIGJzW25dPW5ldyBCKCk7Cgl9Cglmb3IoaW50IGxvb3A9MDtsb29wPDIwO2xvb3ArKyl7CgkJZG91YmxlIGFjY3VtdWxhdG9yPTA7CgkJCgkJZm9yKGludCBuPTA7bjxOVU07bisrKXsKCQkJaW50IGlTZWNyZXQgPSByYW5kKCkgJSBOVU07CgkJCWNsb2NrX3QgYmVnaW4gPSBjbG9jaygpOwoJCSAgICBic1tpU2VjcmV0XS0+ZG9Tb21ldGhpbmcoKTsKCQkgICAgY2xvY2tfdCBlbmQgPSBjbG9jaygpOwoJCSAgICBhY2N1bXVsYXRvcis9ZG91YmxlKGVuZCAtIGJlZ2luKTsKCQl9CgkJCgkJZG91YmxlIGVsYXBzZWRfc2VjcyA9IGFjY3VtdWxhdG9yOwoJCXN0ZDo6Y291dDw8ZWxhcHNlZF9zZWNzPDxzdGQ6OmVuZGw7Cgl9Cn0=