A platform for high-performance distributed tool and library development written in C++. It can be deployed in two different cluster modes: standalone or distributed. API for v0.5.0, released on June 13, 2018.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Profiling.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * *
3  * Copyright 2018 Rice University *
4  * *
5  * Licensed under the Apache License, Version 2.0 (the "License"); *
6  * you may not use this file except in compliance with the License. *
7  * You may obtain a copy of the License at *
8  * *
9  * http://www.apache.org/licenses/LICENSE-2.0 *
10  * *
11  * Unless required by applicable law or agreed to in writing, software *
12  * distributed under the License is distributed on an "AS IS" BASIS, *
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
14  * See the License for the specific language governing permissions and *
15  * limitations under the License. *
16  * *
17  *****************************************************************************/
18 
19 #ifndef PDB_PROFILING_H
20 #define PDB_PROFILING_H
21 
22 #include <chrono>
23 
24 #ifdef PROFILING
25 
30 #define PROFILER_START(id) auto ___begin_##id = std::chrono::high_resolution_clock::now();
31 
36 #define PROFILER_END(id) std::cout << "Time Duration for " << #id << " : " << std::chrono::duration_cast<std::chrono::duration<float>>(std::chrono::high_resolution_clock::now() - ___begin_##id).count() << " seconds.\n";
37 
44 #define PROFILER_END_MESSAGE(id, message) std::cout << message << "\n"; PROFILER_END(id)
45 
46 #else
47 
52 #define PROFILER_START(id)
53 
58 #define PROFILER_END(id)
59 
63 #define PROFILER_END_MESSAGE(id, message)
64 
65 #endif // PROFILING
66 
67 #endif //PDB_PROFILING_H