LCOV - code coverage report
Current view: top level - utils - time.hpp (source / functions) Hit Total Coverage
Test: clean.info Lines: 8 8 100.0 %
Date: 2013-05-24 Functions: 2 2 100.0 %
Branches: 10 20 50.0 %

           Branch data     Line data    Source code
       1                 :            : /* This software is distributed under BSD 3-clause license (see LICENSE file).
       2                 :            :  *
       3                 :            :  * Copyright (c) 2012-2013 Sergey Lisitsyn
       4                 :            :  */
       5                 :            : 
       6                 :            : #ifndef TAPKEE_TIME_H_
       7                 :            : #define TAPKEE_TIME_H_
       8                 :            : 
       9                 :            : /* Tapkee includes */
      10                 :            : #include <tapkee/utils/logging.hpp>
      11                 :            : /* End of Tapkee includes */
      12                 :            : 
      13                 :            : #include <ctime>
      14                 :            : #include <string>
      15                 :            : #include <sstream>
      16                 :            : 
      17                 :            : namespace tapkee
      18                 :            : {
      19                 :            : namespace tapkee_internal
      20                 :            : {
      21                 :            : #ifdef _OPENMP
      22                 :            :         #define CLOCK_TYPE double
      23                 :            :         #define CLOCK_GET omp_get_wtime()
      24                 :            :         #define CLOCK_DIVISOR 1
      25                 :            : #else
      26                 :            :         #define CLOCK_TYPE clock_t
      27                 :            :         #define CLOCK_GET clock()
      28                 :            :         #define CLOCK_DIVISOR CLOCKS_PER_SEC
      29                 :            : #endif
      30                 :            : 
      31                 :            : struct timed_context
      32                 :            : {
      33                 :            :         CLOCK_TYPE start_clock;
      34                 :            :         std::string operation_name;
      35                 :        138 :         timed_context(const std::string& name) : start_clock(CLOCK_GET), operation_name(name)
      36                 :            :         {
      37                 :        138 :         }
      38                 :        138 :         ~timed_context()
      39                 :        138 :         {
      40         [ +  - ]:        138 :                 std::stringstream msg_stream;
      41 [ +  - ][ +  - ]:        138 :                 msg_stream << operation_name << " took " << double(CLOCK_GET-start_clock)/CLOCK_DIVISOR << " seconds."; 
         [ +  - ][ +  - ]
      42 [ +  - ][ +  - ]:        138 :                 LoggingSingleton::instance().message_benchmark(msg_stream.str());
         [ +  - ][ +  - ]
                 [ +  - ]
      43                 :        138 :         }
      44                 :            : };
      45                 :            : }
      46                 :            : }
      47                 :            : 
      48                 :            : #undef CLOCK_TYPE
      49                 :            : #undef CLOCK_GET
      50                 :            : #undef CLOCK_DIVISOR
      51                 :            : 
      52                 :            : #endif

Generated by: LCOV version 1.9