source: src/Common/Stats/Time.h @ c884f2d

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpersistent-indexerpthread-emulationqualifiedEnum
Last change on this file since c884f2d was c884f2d, checked in by tdelisle <tdelisle@…>, 5 years ago

Fixed error for % of parent printing in timing sections and added more timing instrumentation

  • Property mode set to 100644
File size: 1.2 KB
RevLine 
[1cb7fab2]1//
2// Cforall Version 1.0.0 Copyright (C) 2019 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
7// Time.h --
8//
9// Author           : Thierry Delisle
10// Created On       : Fri Mar 01 15:14:11 2019
11// Last Modified By :
12// Last Modified On :
13// Update Count     :
14//
15
16#pragma once
17
18#include "Common/Stats/Base.h"
19
[4f97937]20#if defined( NO_STATISTICS )
21        #define NO_TIME_STATISTICS
22#endif
23
[1cb7fab2]24namespace Stats {
25        namespace Time {
[4f97937]26#               if defined(NO_TIME_STATISTICS)
[79eaeb7]27                        inline void StartGlobal() {}
28
[4f97937]29                        inline void StartBlock(const char * const) {}
30                        inline void StopBlock() {}
31
32                        inline void print() {}
33
34                        struct BlockGuard {
35                                BlockGuard(const char * const) {}
36                                ~BlockGuard() {}
37                        };
38
39                        template<typename func_t>
[c884f2d]40                        inline void TimeBlock(const char *, func_t f) {
41                                f();
42                        }
[4f97937]43#               else
[79eaeb7]44                        void StartGlobal();
45
[4f97937]46                        void StartBlock(const char * const name);
47                        void StopBlock();
[1cb7fab2]48
[4f97937]49                        void print();
[1cb7fab2]50
[4f97937]51                        struct BlockGuard {
52                                BlockGuard(const char * const name ) { StartBlock(name); }
53                                ~BlockGuard() { StopBlock(); }
54                        };
[1cb7fab2]55
[4f97937]56                        template<typename func_t>
[c884f2d]57                        inline void TimeBlock(const char * name, func_t func) {
[4f97937]58                                BlockGuard guard(name);
59                                func();
60                        }
61#               endif
[1cb7fab2]62        }
63}
Note: See TracBrowser for help on using the repository browser.