int main() { #ifdef __GNUC__ #ifdef __clang__ std::cout << "clang++ compiler version " << __VERSION__ << "\n"; #else std::cout << "g++ compiler version " << __VERSION__ << "\n"; #endif #endif try { Application app; Timer t; t.Start(); app.runProcess(); t.Stop(); uint64_t tNoThreads = t.usecs(); std::cout << "no threading " << tNoThreads << " usecs" << ", " << tNoThreads * 1e-6 << " secs\n"; std::cout << "vector v size/capacity=" << app.Size() << "/" << app.Capacity() << "\n"; app.Reset(); // run adds things to vector v with push_back, reset vector v for the threaded run t.Start(); app.runProcessWithThreads(); t.Stop(); uint64_t tThreads = t.usecs(); std::cout << "threading " << tThreads << " usecs" << ", " << tThreads * 1e-6 << " secs\n"; std::cout << "vector v size/capacity=" << app.Size() << "/" << app.Capacity() << "\n"; double speedup = double(tNoThreads) / double(tThreads); if(speedup >= 1.) std::cout << "Threading speed up = " << speedup << " times\n"; else std::cout << "Threading slow down = " << 1./speedup << " times\n"; } catch (std::exception& e) { std::cerr << e.what() << "\n"; } return 0; }