⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 performance_measure.hpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 HPP
字号:
//  Copyright John Maddock 2007.//  Use, modification and distribution are subject to the//  Boost Software License, Version 1.0. (See accompanying file//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)#ifndef BOOST_MATH_PERFORMANCE_MEASURE_HPP#define BOOST_MATH_PERFORMANCE_MEASURE_HPP#include <boost/config.hpp>#include <boost/timer.hpp>#include <cstring>#ifdef _WIN32#include <windows.h>#endiftemplate <class F>double performance_measure(F f){   unsigned count = 1;   double time, result;#ifdef _WIN32   int old_priority = GetThreadPriority(GetCurrentThread());   SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);#endif   //   // Begin by figuring out how many times to repeat   // the function call in order to get a measureable time:   //   do   {      boost::timer t;      for(unsigned i = 0; i < count; ++i)         f();      time = t.elapsed();      count *= 2;      t.restart();   }while(time < 0.5);   count /= 2;   result = time;   //   // Now repeat the measurement over and over   // and take the shortest measured time as the   // result, generally speaking this gives us   // consistent results:   //   for(unsigned i = 0; i < 20u;++i)   {      boost::timer t;      for(unsigned i = 0; i < count; ++i)         f();      time = t.elapsed();      if(time < result)         result = time;      t.restart();   }#ifdef _WIN32   SetThreadPriority(GetCurrentThread(), old_priority);#endif   return result / count;}struct test_info{   test_info(const char* n, void (*p)());   const char* name;   void (*proc)();};inline bool operator < (const test_info& a, const test_info& b){   return std::strcmp(a.name, b.name) < 0;}extern void consume_result(double);extern void set_call_count(int i);extern void add_new_test(test_info i);inline test_info::test_info(const char* n, void (*p)()){   name = n;   proc = p;   add_new_test(*this);}#define BOOST_MATH_PERFORMANCE_TEST(name, string) \   void BOOST_JOIN(name, __LINE__) ();\   namespace{\   test_info BOOST_JOIN(BOOST_JOIN(name, _init), __LINE__)(string, BOOST_JOIN(name, __LINE__));\   }\   void BOOST_JOIN(name, __LINE__) ()#endif // BOOST_MATH_PERFORMANCE_MEASURE_HPP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -