#include <chrono>
#include <cstring>
#include <iosfwd>
#include <string>
#include <unordered_map>
#include <vector>
Go to the source code of this file.
 | 
| using  | ankerl::nanobench::Clock = std::conditional< std::chrono::high_resolution_clock::is_steady, std::chrono::high_resolution_clock, std::chrono::steady_clock >::type | 
|   | 
 | 
| void  | ankerl::nanobench::render (char const *mustacheTemplate, Bench const &bench, std::ostream &out) | 
|   | Renders output from a mustache-like template and benchmark results.  More...
  | 
|   | 
| void  | ankerl::nanobench::render (std::string const &mustacheTemplate, Bench const &bench, std::ostream &out) | 
|   | 
| void  | ankerl::nanobench::render (char const *mustacheTemplate, std::vector< Result > const &results, std::ostream &out) | 
|   | Same as render(char const* mustacheTemplate, Bench const& bench, std::ostream& out), but for when you only have results available.  More...
  | 
|   | 
| void  | ankerl::nanobench::render (std::string const &mustacheTemplate, std::vector< Result > const &results, std::ostream &out) | 
|   | 
| char const *  | ankerl::nanobench::templates::csv () noexcept | 
|   | CSV data for the benchmark results.  More...
  | 
|   | 
| char const *  | ankerl::nanobench::templates::htmlBoxplot () noexcept | 
|   | HTML output that uses plotly to generate an interactive boxplot chart. See the tutorial for an example output.  More...
  | 
|   | 
| char const *  | ankerl::nanobench::templates::pyperf () noexcept | 
|   | Output in pyperf compatible JSON format, which can be used for more analyzation.  More...
  | 
|   | 
| char const *  | ankerl::nanobench::templates::json () noexcept | 
|   | Template to generate JSON data.  More...
  | 
|   | 
| template<typename Arg >  | 
| void  | ankerl::nanobench::doNotOptimizeAway (Arg &&arg) | 
|   | Makes sure none of the given arguments are optimized away by the compiler.  More...
  | 
|   | 
| template<typename T >  | 
| void  | ankerl::nanobench::detail::doNotOptimizeAway (T const &val) | 
|   | 
| template<typename T >  | 
| void  | ankerl::nanobench::detail::doNotOptimizeAway (T &val) | 
|   | 
| PerformanceCounters &  | ankerl::nanobench::detail::performanceCounters () | 
|   | 
| std::ostream &  | ankerl::nanobench::operator<< (std::ostream &os, BigO const &bigO) | 
|   | 
| std::ostream &  | ankerl::nanobench::operator<< (std::ostream &os, std::vector< ankerl::nanobench::BigO > const &bigOs) | 
|   | 
◆ ANKERL_NANOBENCH
      
        
          | #define ANKERL_NANOBENCH | 
          ( | 
            | 
          x | ) | 
             ANKERL_NANOBENCH_PRIVATE_##x() | 
        
      
 
 
◆ ANKERL_NANOBENCH_IS_TRIVIALLY_COPYABLE
      
        
          | #define ANKERL_NANOBENCH_IS_TRIVIALLY_COPYABLE | 
          ( | 
            | 
          ... | ) | 
             std::is_trivially_copyable<__VA_ARGS__>::value | 
        
      
 
 
◆ ANKERL_NANOBENCH_LOG
      
        
          | #define ANKERL_NANOBENCH_LOG | 
          ( | 
            | 
          x | ) | 
           | 
        
      
 
 
◆ ANKERL_NANOBENCH_NO_SANITIZE
      
        
          | #define ANKERL_NANOBENCH_NO_SANITIZE | 
          ( | 
            | 
          ... | ) | 
           | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_CXX
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_CXX | 
          ( | 
           | ) | 
             __cplusplus | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_CXX11
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_CXX11 | 
          ( | 
           | ) | 
             201103L | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_CXX14
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_CXX14 | 
          ( | 
           | ) | 
             201402L | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_CXX17
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_CXX17 | 
          ( | 
           | ) | 
             201703L | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_CXX98
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_CXX98 | 
          ( | 
           | ) | 
             199711L | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_IGNORE_EFFCPP_POP
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_IGNORE_EFFCPP_POP | 
          ( | 
           | ) | 
           | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_IGNORE_EFFCPP_PUSH
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_IGNORE_EFFCPP_PUSH | 
          ( | 
           | ) | 
           | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_IGNORE_PADDED_POP
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_IGNORE_PADDED_POP | 
          ( | 
           | ) | 
           | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_IGNORE_PADDED_PUSH
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_IGNORE_PADDED_PUSH | 
          ( | 
           | ) | 
           | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_NODISCARD
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_NODISCARD | 
          ( | 
           | ) | 
           | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_NOEXCEPT_STRING_MOVE
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_NOEXCEPT_STRING_MOVE | 
          ( | 
           | ) | 
             std::is_nothrow_move_assignable<std::string>::value | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_NOINLINE
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_NOINLINE | 
          ( | 
           | ) | 
             __attribute__((noinline)) | 
        
      
 
 
◆ ANKERL_NANOBENCH_PRIVATE_PERF_COUNTERS
      
        
          | #define ANKERL_NANOBENCH_PRIVATE_PERF_COUNTERS | 
          ( | 
           | ) | 
             0 | 
        
      
 
 
◆ ANKERL_NANOBENCH_VERSION_MAJOR
      
        
          | #define ANKERL_NANOBENCH_VERSION_MAJOR   4 | 
        
      
 
 
◆ ANKERL_NANOBENCH_VERSION_MINOR
      
        
          | #define ANKERL_NANOBENCH_VERSION_MINOR   3 | 
        
      
 
 
◆ ANKERL_NANOBENCH_VERSION_PATCH
      
        
          | #define ANKERL_NANOBENCH_VERSION_PATCH   11 |