コード例 #1
0
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;
}