MeVisLabToolboxReference
MeVis/Foundation/Sources/MLProfilingManager/Include/mlProfilingManager.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //----------------------------------------------------------------------------------
00003 // The profiling manager class.
00004 //
00005 // \file    mlProfilingManager.h
00006 // \author  Marcus Barann
00007 // \date    7/2009
00008 //
00009 //----------------------------------------------------------------------------------
00010 #ifndef _ML_PROFILING_MANAGER_H_
00011 #define _ML_PROFILING_MANAGER_H_
00012 
00013 #include "mlProfilingManagerDllExport.h"
00014 #include "mlMetaProfile.h"
00015 #include <map>
00016 #include <string>
00017 #include <vector>
00018 
00019 #include <mlTimeCounter.h>
00020 
00021 class MLCountProfile;
00022 class MLMemoryProfile;
00023 class MLTimeProfile;
00024 
00025 
00026 //----------------------------------------------------------------------------------
00027 
00028 class MLPROFILINGMANAGER_EXPORT MLProfilingManager
00029 {
00030 public:
00032   static void initialize();
00033 
00035   static void deinitialize();
00036 
00038   static void setProfilingEnabled(bool enabled);
00039 
00041   static bool isProfilingEnabled() { return _singleton && _singleton->_isProfilingEnabled; }
00042 
00044   static std::string byteToHumanReadable(size_t bytes);
00045 
00047   static std::string timeToHumanReadable(long double time);
00048 
00050   static void setTimeProfilingGraphEnabled(bool enabled) { _singleton->_isTimeProfilingGraphEnabled = enabled; }
00051 
00053   static bool isTimeProfilingGraphEnabled() { return _singleton && _singleton->_isTimeProfilingGraphEnabled; }
00054 
00056   static void resetAllProfilingData();
00057 
00059   static inline long double getCurrentTime();
00060 
00061 
00062 private:
00063   MLProfilingManager();
00064   ~MLProfilingManager();
00065 
00068   static MLMetaProfile* createMetaProfile(const std::string& description, MLMetaProfilePtr* metaProfilePtr);
00069 
00070 private:
00071   std::vector<MLMetaProfile*> _metaProfiles;
00072 
00073   bool _isProfilingEnabled;
00074   bool _isTimeProfilingGraphEnabled;
00075 
00076   static MLProfilingManager* _singleton;
00077 
00078   friend class MLMetaProfile;
00079   friend class MLMetaProfilePtr;
00080 };
00081 
00082 
00083 
00084 //----------------------------------------------------------------------------------
00085 
00086 long double MLProfilingManager::getCurrentTime()
00087 {
00088   return ML_NAMESPACE::TimeCounter().getCurrentValueInSeconds();
00089 }
00090 
00091 
00092 
00093 #endif // _ML_PROFILING_MANAGER_H_