#include #include #include const int NOBJECTS = 500000; class PerfTest { public: PerfTest (); void addAmount (int val); int getAmount (); private: int amount; }; PerfTest::PerfTest () { amount = 0; } void PerfTest::addAmount (int val) { amount += val; } int PerfTest::getAmount () { return amount; } void reportResult (struct timeval* tstart, struct timeval* tend); /* * C++ version of the test driver. * Creates half a million simple account objects, adds an amount * to each one, and then adds up the amounts in all accounts. * Reports elapsed time in milliseconds and number of objects * processed per millisecond. */ void main (int argc, char** argv) { PerfTest* ptarr[NOBJECTS]; struct timeval tval_start; struct timeval tval_end; struct timezone tzone; int sum = 0; int i = 0; gettimeofday (&tval_start, &tzone); for (i = 0; i < NOBJECTS; i++) ptarr[i] = new PerfTest; for (i = 0; i < NOBJECTS; i++) ptarr[i]->addAmount(i); for (i = 0; i < NOBJECTS; i++) sum += ptarr[i]->getAmount(); gettimeofday (&tval_end, &tzone); reportResult (&tval_start, &tval_end); } /* * Helper function to report results. */ void reportResult (struct timeval* tstart, struct timeval* tend) { int start_ms = (tstart->tv_sec * 1000) + (tstart->tv_usec / 1000); int end_ms = (tend->tv_sec * 1000) + (tend->tv_usec / 1000); cout << "Elapsed time in milliseconds for " << NOBJECTS << " objects: " << (end_ms - start_ms) << "\n"; cout << "Objects per millisecond: " << (NOBJECTS / (end_ms - start_ms)) << "\n"; }